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!