3秒后,我需要利用array.map()
显示数组的一些消息。这是数组:
const messages = [
'hello', 'world', 'have', 'some', 'code'
]
为了在地图上等待,我创建了一个wait
函数。
const wait = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(true)
}, 3000)
})
然后,我有一个app
方法,在其中执行了这样的Promise.all()
,
const app = async () => {
await Promise.all(messages.map(async msg => {
await wait
document.querySelector('#app').innerHTML += msg + ', '
}))
}
app()
预期的输出是在消息数组上的映射的每次迭代中等待3秒,但是它将在3秒后立即输出所有消息!
Codepen:https://codepen.io/rakibtg/pen/xQMwYK
我在这里想念什么?
答案 0 :(得分:0)
Promise.all()
可用于传递承诺列表,所有承诺都将并行等待。
您共享的代码每次迭代确实要等待3秒钟,除了所有这些迭代都同时发生。
如果您不想并行执行所有操作,而一次只处理一个,则可以将其重写为一个简单的循环:
const app = async () => {
for (const msg of messages) {
await wait();
document.querySelector('#app').innerHTML += msg + ', '
}
}