Я не думаю, что await
(или Promise.all
) - это хорошо для того, чего вы пытаетесь достичь, если (к счастью) вы не ожидаете call () в качестве последнего вызова, вам придется дождитесь разрешения await
(или все обещания будут разрешены или отклонены).
Скажем, у вас есть giveSome()
, который выполняет некоторую асинхронную работу и возвращает Promise
. Скажем, у вас есть задачи A
и B
. A завершается через 5 с, а B завершается через 1 с. Теперь вы делаете
// called in parallel
// both a and b are promise pending
var a = giveSome() // task A
var b = giveSome() // task B
// do something with data in async function
console.log(await a) // this is resolved only after 5s
console.log(await b) // this is already resolved after 1s but waits for the await above
Вместо этого, если вы делаете:
a.then(val => console.log(val)) // outputs val after 5s
b.then(val => console.log(val)) // outputs val after 1s
Так что в вашем случае вы могли бы:
var data = urls.map(requestAsync);
for (let i = 0; i < data.length; i++) {
data[i]
.then(val => console.log(val) // do something)
// burden is you need to handle errors individually
.catch(e => console.error(e))
}