【发布时间】:2019-10-22 12:17:49
【问题描述】:
我用这个功能
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,然后将整个testcases.forEach(...)包裹在Promise.all(...).then(() => console.log("End"))中。目前,您的console.log("End")将首先执行,因为没有任何东西等待异步forEach完成。很快,您可能会尝试allSettled而不是all,如果其中一个迭代失败,它也不会失败。
标签: node.js async-await synchronization