(async function iife () {
const numbers = [1, 2, 3, 4]
let count = 0
async function returnNumberAsync (number) {
return new Promise(resolve => {
setTimeout(() => resolve(number), 0)
})
}
await Promise.all(numbers.map(async number => {
count += await returnNumberAsync(number)
}))
console.log(count)
})()
This snippet logs 4
to the console, which is completely beyond me. As soon as I assign the promised value inside map
to its own local variable …
const result = await returnNumberAsync(number)
count += result;
… it logs 10
like I'd expect. What's happening when I count += await …
??
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…