【发布时间】:2020-08-16 14:08:10
【问题描述】:
当我做这样的事情时我意识到:
for (const entity of someArr) {
console.log('start now!')
await doSomeAsycAction()
console.log('waited X secs!')
}
打印出来:
start now!
waited X secs!
start now!
waited X secs!
...
但是当我使用地图时:
arr.map(async entity => {
console.log('start now!')
await doSomeAsycAction()
console.log('waited X secs!')
})
打印出来:
start now!
start now!
start now!
...
waited X secs!
waited X secs!
waited X secs!
...
有人能解释一下为什么会这样吗?
【问题讨论】:
-
这能回答你的问题吗? Execute promises map sequentially
-
因为
await只让当前函数等待,而map总是同步迭代(不关心promise返回值)。 -
您可能还想查看advancedweb.hu/…
-
第二个你正在使用异步运行代码的异步。检查this
-
这可能会回答 -> Javascript 和异步函数中的 EventLoop -> blog.sessionstack.com/…
标签: javascript arrays for-loop asynchronous