react-native - 在 for 循环中等待分派时代码未执行
问题描述
我在这方面找不到任何东西,所以我决定在这里问。我正在使用 react-native 和 redux。我将业务逻辑排除在代码之外。
我有这个函数调用另一个执行 API 调用的函数。执行 API 调用的函数需要访问“getState”,这就是我使用 dispatch 的原因。
const getStuff = (day) => (dispatch) => {
const result = await dispatch(functionThatDoesAPIRequest(day)
}
然后我有这个循环数天的代码,在某些情况下需要进行 API 调用。在我正在测试的情况下,它不需要访问 API。直到我在注释中的 if 语句之间放置了一行,我才发现我的代码有问题。然后我将 if 更改为始终为 False 并且当代码行不在注释中时错误仍然存在,即使它永远无法到达那段代码。
for (let i = 0; i < dayArray.length; i+=1) {
if (false) {
const resultThatIsNotNeeded = await dispatch(getStuff(dayArray[i])
}
// more business logic
}
将 for 循环更改为 ForEach 循环以某种方式解决了这个问题。但我真的不知道为什么这会解决它。
dayArray.forEach(async (day, i) => {
if (false) {
const resultThatIsNotNeeded = await dispatch(getStuff(dayArray[i])
}
}
解决方案
那是因为在您的 forEach 上,await 调用在异步函数内部,因为它应该在 for 循环中,我看不到任何在异步函数中执行的代码
推荐阅读
- python - 如何将多行 Python 代码转换为单行?
- python - 如何遍历模板中的多维列表/字典
- django - 带有 whitenoise.django 的 ImportError
- c++ - 如何在 g++ 中“使用 unicode 字符集”?
- python - 有没有办法在熊猫数据帧上并行化这个循环?
- reactjs - Algolia SearchBox - 我希望它仅在用户选择 SearchBox 时显示 Hits
- typescript - 使用 keyof 的参数泛型推理
- python-3.x - 将带有 texttract 模块的 Python 应用程序部署到 Google Cloud Platform
- firebase - 用于在另一个集合中的文档中查找数据的 Firestore 匹配规则
- c# - 如何在统一 c# 脚本中从面板中销毁动态元素