Maison > interface Web > js tutoriel > Comment puis-je attendre la fin de plusieurs promesses JavaScript avant de continuer ?

Comment puis-je attendre la fin de plusieurs promesses JavaScript avant de continuer ?

Barbara Streisand
Libérer: 2024-12-19 00:16:09
original
467 Les gens l'ont consulté

How Can I Wait for Multiple JavaScript Promises to Finish Before Continuing?

Attendre la fin de plusieurs tâches asynchrones en JavaScript

Problème :

Vous avez une série de tâches asynchrones (promesses ) et doivent exécuter un bloc de code uniquement lorsque tous ont été terminé.

Solution :

Utilisez Promise.all pour rassembler toutes les promesses dans un seul tableau et attendre sa résolution ou son rejet.

Mise en œuvre :

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
  });
Copier après la connexion

DoSomeAsyncStuff révisé fonction :

function doSomeAsyncStuff() {
  return new Promise((resolve, reject) => {
    const editor = generateCKEditor();
    editor.on('instanceReady', (evt) => {
      doSomeStuff();
      resolve(true);
    })
  });
}
Copier après la connexion

Exemple :

function doSomethingAsync(value) {
  return new Promise((resolve) => {
    setTimeout(() => {
      console.log("Resolving " + value);
      resolve(value);
    }, Math.floor(Math.random() * 1000));
  });
}

function test() {
  const promises = [];

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

  Promise.all(promises)
    .then((results) => {
      console.log("All done", results);
    })
    .catch((e) => {
      // Handle errors here
    });
}

test();
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal