node.js - 在 ForEach 中遇到同步问题
问题描述
我使用这个功能
await getTestData(entry).then(res=> {
for(let i = 0; i < res.length; i++){
//console.log(res[0].data)
console.log("line");
}
}).catch(error => {
console.log("MongoGetError");
});
console.log("end");
结果是
- 线
- 结尾
现在我必须把它放到一个.forEach()
循环中。我试过了:
testcases.forEach(async function(entry,index) {
await getTestData(entry).then(res=> {
for(let i = 0; i < res.length; i++){
//console.log(res[0].data)
console.log("line");
}
}).catch(error => {
console.log("MongoGetError");
});
});
console.log("End");
但结果是:
- 结尾
- 线
- 线
最后得到什么是我的错
- 线
- 线
- 结尾
解决方案
注意 - 您已经在返回类似 map(); 的方法中进行了迭代。forEach() 不返回任何内容
第 1 步 - 将 map() 放入 promise.all() 方法第 2 步 - 您必须通过await或.then()或任何其他子进程
来持有 promise.all()
推荐阅读
- java - 为什么从第一个字符串数组解析数据时抛出异常,但跳过第一个数组时却没有?
- python - 生成多个敌人 pygame
- kubernetes - kubernetes pod 容器通过 CrashLoopBackoff 不断重启
- database - 如何使用 MongoDB 实现 SELECT ... FOR UPDATE 和 Transactions 水平扩展服务?
- javascript - 每次更新状态时如何渲染元素
- visual-studio-code - VSCode 不会为 nextjs (9.5.2) 绑定客户端断点
- reactjs - 我想在下拉菜单上显示标题,当有人选择一个选项并提交时,我想提交年份值
- sql - BigQuery - 连接列的所有行,直到达到特定值
- python - Python 和 Selenium - 无法选中复选框
- haskell - 将相对路径转换为绝对路径