Maison >interface Web >js tutoriel >## Promise.all traite-t-il les promesses de manière séquentielle ou en parallèle ?

## Promise.all traite-t-il les promesses de manière séquentielle ou en parallèle ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-25 09:39:02355parcourir

## Does Promise.all Process Promises Sequentially or in Parallel?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn