Maison >interface Web >js tutoriel >Promise.all() vs Multiple wait : quand les différences de timing sont-elles importantes ?

Promise.all() vs Multiple wait : quand les différences de timing sont-elles importantes ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-05 04:00:11479parcourir

Promise.all() vs. Multiple await: When Do Timing Differences Matter?

Await Promise.all() vs Multiple Await : différences de timing

En JavaScript, les opérations asynchrones peuvent être gérées à l'aide de Promise.all( ) ou plusieurs instructions wait. Bien que les deux méthodes servent en fin de compte le même objectif, à savoir attendre que plusieurs promesses soient réglées, il existe de subtiles différences temporelles entre elles.

Scénario 1 : Utilisation de Promise.all()

Promise.all() prend un tableau de promesses et renvoie une seule promesse qui se résout en un tableau de résultats une fois que toutes les promesses d'entrée sont réglées, qu'elles soient résolues ou non. rejeter.

Exemple :

const data = await Promise.all([res(3000), res(2000), res(1000)])

Dans cet exemple, la méthode Promise.all() retarde la résolution des données jusqu'à ce que les trois promesses d'entrée soient résolues.

Scénario 2 : Utilisation de plusieurs instructions wait

Dans ce scénario, plusieurs instructions wait sont utilisées pour attendre chaque promesse individuelle à régler :

const t1 = task1();
const t2 = task2();

const result1 = await t1;
const result2 = await t2;

Ici, result1 sera résolu dès que task1() se règle, et result2 sera résolu dès que task2() se règle.

Comparaison de timing

La principale différence temporelle entre ces deux approches est que Promise.all() retarde la résolution du résultat final jusqu'à ce que toutes les promesses d'entrée soient satisfaites. Cela peut être avantageux dans les scénarios où il est important d'attendre que toutes les tâches soient terminées avant de continuer.

D'un autre côté, l'utilisation de plusieurs instructions wait permet aux tâches individuelles de se régler indépendamment, ce qui peut entraîner un temps d'exécution global plus rapide. .

Exemple d'illustration

Considérons un exemple où les fonctions de retard sont utilisées pour simuler un travail asynchrone tâches :

Exemple n°1 (utilisation de Promise.all()) :

const data = await Promise.all([res(3000), res(2000), res(1000)])

Exemple n°2 (utilisation de plusieurs instructions wait) :

const t1 = task1();
const t2 = task2();
const t3 = task3();

const result1 = await t1;
const result2 = await t2;
const result3 = await t3;

Dans l'exemple #1, la méthode Promise.all() retarderait la résolution des données jusqu'à ce que les trois tâches soient terminées, ce qui prendrait 3 secondes. Dans l'exemple n°2, puisque les tâches se règlent indépendamment, result1 serait disponible après 1 seconde, result2 après 2 secondes et result3 après 3 secondes.

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