好久好久没有写js了。。。。,
有时候看见这样的代码
let ret = [];
[xxx].forEach(async (item) => {
let res = await xxxx
ret.push[res]
});
//处理ret
这样是不对的,forEach底层实现没有await每个回调,所以上面代码其实ret是空的。
应该这样写
let tasks = [xxx].map((item) => {
return Promise
});
let ret = await Promise.all(tasks)
//处理ret
当然改成普通的for循环也行,并发度就将为1了。
本文探讨了JavaScript中异步编程的常见误区,指出使用forEach结合async/await并不能正确实现异步任务的等待,而应采用Promise.all或改用for循环来确保所有异步操作按预期执行。
986

被折叠的 条评论
为什么被折叠?



