Maison >interface Web >js tutoriel >Comment utiliser Promise.all pour gérer et attendre plusieurs promesses ?

Comment utiliser Promise.all pour gérer et attendre plusieurs promesses ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-24 17:37:11418parcourir

How to Use Promise.all to Manage and Await Multiple Promises?

Comment gérer plusieurs promesses et attendre leur achèvement

Lorsque vous travaillez avec du code asynchrone, il est souvent nécessaire de gérer plusieurs promesses et de les attendre tout doit être terminé avant de continuer. Cet article vous guidera dans la réalisation de cet objectif en utilisant Promise.all.

Présentation de Promise.all

Promise.all accepte un éventail de promesses et renvoie une seule promesse qui résout lorsque toutes les promesses d'entrée ont été résolues, ou rejette si l'une d'entre elles rejette.

Restructuration doSomeAsyncStuff pour renvoyer une promesse

Pour que doSomeAsyncStuff fonctionne avec des promesses, modifiez-le comme suit :

function doSomeAsyncStuff() {
    return new Promise((resolve) => {
        editor.on('instanceReady', function(evt) {
            doSomeStuff();
            resolve(true);
        });
    });
}

Utiliser Promise.all pour attendre toutes les tâches asynchrones

Une fois que doSomeAsyncStuff renvoie une promesse, vous pouvez utiliser Promettez.all d'attendre que toutes les instances soient terminées. Voici une version améliorée de votre code :

const promises = [];

for (let i = 0; i < 5; i++) {
    promises.push(doSomeAsyncStuff());
}

Promise.all(promises)
    .then(() => {
        for (let i = 0; i < 5; i++) {
            doSomeStuffOnlyWhenTheAsyncStuffIsFinish();    
        }
    })
    .catch((e) => {
        // Handle errors here
    });

Ce code crée un tableau de promesses à partir de chaque appel à doSomeAsyncStuff. Promise.all prend ce tableau et attend que toutes les promesses soient résolues. Une fois toutes les promesses résolues, le rappel then est exécuté, vous permettant d'effectuer des actions qui dépendent des résultats des tâches asynchrones.

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