I am trying to run a for loop which queues a bunch of asynchronous requests. Once all the requests complete, independent of whether they resolve
or reject
, I want to then run some code. I am trying to take advantage of the async/await pattern, as it looks nicer. :)
This is what I am doing:
var promises = []
for ( item in list ) {
prom = AsyncFunction( item )
promises.push(prom)
}
await Promise.all(promises)
doMoreAfter()
However, some of the promises fail, and the second that happens Promise.all()
fails aswell.
I want to simply ignore any failed promises, and have the next code run after all the promises have completed.
I found solutions like this.
Promise.all([a(), b(), c()].map(p => p.catch(e => e)))
.then(results => console.log(results)) // 1,Error: 2,3
.catch(e => console.log(e));
But it doesn't look like it works when trying to turn it into the async/await format.
await Promise.all(promises.map(p => p.catch(e => e)))
What am I missing?