Maison > interface Web > js tutoriel > Comment Promise.all() peut-il gérer plusieurs opérations asynchrones simultanées ?

Comment Promise.all() peut-il gérer plusieurs opérations asynchrones simultanées ?

Susan Sarandon
Libérer: 2024-12-30 05:45:15
original
647 Les gens l'ont consulté

How Can Promise.all() Handle Multiple Concurrent Asynchronous Operations?

Gestion simultanée de plusieurs opérations asynchrones

Dans les scénarios où une séquence d'opérations asynchrones (représentées sous forme de promesses) est exécutée, il devient nécessaire de déterminer lorsque toutes ces opérations sont terminées avant de procéder aux tâches suivantes. Cet article propose une solution à ce défi en tirant parti de la méthode Promise.all().

Comme vous l'avez mentionné, la fonction doSomeAsyncStuff() effectue des tâches asynchrones. En le modifiant pour renvoyer une promesse, nous pouvons capturer l'état d'achèvement de chaque opération asynchrone. Cela nous permet de collecter toutes ces promesses dans un tableau, qui est ensuite transmis à Promise.all().

La méthode Promise.all() accepte un tableau de promesses comme paramètre. Une fois que toutes les promesses du tableau ont été résolues ou rejetées, Promise.all() renvoie une seule promesse. Cette promesse unique se résout en un tableau de résultats (ou de raisons de rejet) des promesses individuelles.

Dans votre code, vous pouvez l'implémenter en incorporant les étapes suivantes :

const promises = [];

// Create a Promise for each asynchronous operation
for (let i = 0; i < 5; i++) {
  promises.push(doSomeAsyncStuff());
}

// Use Promise.all to wait for all the Promises to resolve
Promise.all(promises)
  .then(() => {
    // All asynchronous operations have completed. Execute subsequent tasks here.
    for (let i = 0; i < 5; i++) {
      doSomeStuffOnlyWhenTheAsyncStuffIsFinish();
    }
  })
  .catch((e) => {
    // Handle any errors that occurred during the asynchronous operations.
  });
Copier après la connexion

Par en utilisant Promise.all(), vous pouvez efficacement vous assurer que toutes les opérations asynchrones se sont terminées avec succès avant d'exécuter des tâches qui dépendent de leurs résultats.

Pour plus de précisions, reportez-vous au document fourni. 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

Dans cet exemple, nous définissons une fonction asynchrone doSomethingAsync() qui se résout avec un délai aléatoire. Nous créons un tableau de promesses et utilisons Promise.all() pour attendre qu'elles soient toutes résolues. Une fois qu'ils ont tous terminé avec succès, nous pouvons procéder à nos tâches suivantes.

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!

source:php.cn
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