Maison >interface Web >js tutoriel >## Promise.all traite-t-il les promesses de manière séquentielle ou en parallèle ?
Traitement séquentiel ou parallèle dans Node.js Promise.all
Lors de l'utilisation de Promise.all avec un itérable de promesses, une question courante se pose : traite-t-il les promesses de manière séquentielle ou en parallèle ?
Q1 : Traitement séquentiel ou parallèle ?
Malgré sa documentation ambiguë, Promise.all pas traiter les promesses de manière séquentielle ou en parallèle. Au lieu de cela, il attend simplement la résolution (ou le rejet) de toutes les promesses fournies simultanément.
Cela signifie que toutes les promesses transmises à Promise.all sont exécutées simultanément dès leur création. Le résultat final renvoyé par Promise.all est un tableau de valeurs résolues ou une valeur de rejet unique si l'une des promesses échoue.
Q2 : Traitement séquentiel avec promesses
Étant donné que Promise.all n'applique pas le traitement séquentiel, si vous devez traiter les promesses de manière séquentielle, vous pouvez créer une chaîne de promesses enchaînées :
<code class="js">p1.then(p2).then(p3).then(p4).then(p5)....</code>
Cette approche garantit que chaque promesse est exécutée une fois la précédente résolue. .
Alternativement, vous pouvez utiliser Array::reduce pour réaliser une exécution séquentielle avec un itérable de fonctions asynchrones :
<code class="js">iterable.reduce((p, fn) => p.then(fn), Promise.resolve())</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!