Не понимаю, почему все обещания выполняются одновременно.Я читал, что await
не работает должным образом в цикле forEach
, но он не работает с map
либо
const promise = async (ms, name) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(`resolving ${name}`)
resolve(name)
}, ms)
});
}
async function main() {
['foo', 'bar', 'baz'].reduce(async (accum, curr) => {
const res = await promise(1000, curr)
return res
}, Promise.resolve(''))
}
main()
Но в этом сценарии ожидание отлично работает:
async function main2() {
const ms = 1000
await promise(ms, "foo")
await promise(ms, "bar")
await promise(ms, "baz")
}
main2()