Je suis à l'aide d' async
/await
de tirer plusieurs api
des appels en parallèle:
async function foo(arr) {
const results = await Promise.all(arr.map(v => {
return doAsyncThing(v)
}))
return results
}
Je sais que, contrairement à l' loops
, Promise.all
s'exécute en parallèle (qui est, le temps d'attente pour les résultats, partie est en parallèle).
Mais je sais aussi que:
Promesse.tout est rejetée si l'un des éléments est rejeté et Promesse.tous échoue rapide: Si vous avez quatre promesses qui résoudre après un délai d'attente, et on rejette immédiatement, alors la Promesse.tous les rejette immédiatement.
Comme je l'ai lu cela, si j' Promise.all
avec 5 promesses, et le premier à terminer renvoie une reject()
, alors que les 4 autres sont effectivement annulées et leur a promis resolve()
valeurs sont perdues.
Est-il une troisième voie? Où l'exécution est effectivement en parallèle, mais une défaillance unique ne pas gâcher le tas?