javascript - 在异步循环问题中反应 if 语句
问题描述
帮助,我似乎无法弄清楚如何解决这个问题:
array.map(object => {
console.log(this.state.newArr) // [] didn't update despite setState
if (this.state.newArr.length === 0) {
axios.get('http://localhost/')
.then(res => {
this.setState(prevState => ({ newArr: [...prevState.newArr, res] })) // setState here
})
}
})
编辑:更新的代码实现了答案,但仍然无法正常工作。
解决方案
异步/等待模式可以是一个解决方案。从未在地图中尝试过,但它会是这样的:
array.map(async object => {
if (this.state.newArr.length === 0) {
const response = await axios.get('http://localhost/');
await this.setStateAsync({ newArr: [...this.state.newArr, response] });
// or without the setStateAsync
// this.setState(prevState => ({ newArr: [...prevState.newArr, response] }));
}
});
const setStateAsync = state => {
return new Promise((resolve) => {
this.setState(state, resolve)
});
}
推荐阅读
- azure - Microsoft Windows [版本 10.0.19041.508] Power Shell 5.1 上的部署脚本的本地部署问题
- c++ - 命令行中的 C++、字符串和整数,使用未知输入大小的 cin
- openstreetmap - 如何从 OSM 建筑数据中获取建筑等级
- ios - NSLayoutManager numberOfGlyphs 总是显示 0,Swift
- c# - 动态分类子类别的下拉列表
- javascript - 使用回调恢复默认行为
- python - 如何将条形图的下限误差限制为 0?
- c# - 处理 API 请求时如何检索 AuthenticationToken?
- javascript - 使用 Javascript 设置 cookie 时遇到问题
- node.js - 如何使用 sequelize 特定错误?