Maison  >  Article  >  interface Web  >  Comment exécuter des promesses de manière séquentielle avec les paramètres du tableau ?

Comment exécuter des promesses de manière séquentielle avec les paramètres du tableau ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-20 14:59:02449parcourir

How to Execute Promises Sequentially with Array Parameters?

Exécuter les promesses de manière séquentielle avec les paramètres du tableau

Dans certains scénarios, vous devrez peut-être exécuter les promesses de manière séquentielle, en transmettant les paramètres d'un tableau. Cela devient nécessaire lorsque le tableau est rempli dynamiquement et que l'ordre d'exécution est crucial.

Une approche pour créer une "boucle pauseable" consiste à utiliser à plusieurs reprises la méthode .then. Cependant, cela peut être fastidieux et donner lieu à une chaîne de promesses en forme de pyramide.

Utiliser des promesses

Une solution plus propre consiste à utiliser Array.reduce pour plier la chaîne de promesses en une seule promesse :

myArray.reduce(
  (p, x) =>
    p.then(() => myPromise(x)),
  Promise.resolve()
)

Cette approche crée une série de promesses enchaînées, garantissant une exécution séquentielle.

Utilisation des fonctions asynchrones

Alternativement, les fonctions asynchrones permettent une implémentation plus lisible et plus efficace. L'exemple suivant utilise une fonction asynchrone pour itérer et exécuter les promesses :

const forEachSeries = async (iterable, action) => {
  for (const x of iterable) {
    await action(x)
  }
}

forEachSeries(myArray, myPromise)

Collecte des valeurs de retour

Si vous devez collecter les valeurs de retour des promesses, vous pouvez utiliser une version modifiée de la fonction forEachSeries appelée mapSeries :

const mapSeries = async (iterable, fn) => {
  const results = []

  for (const x of iterable) {
    results.push(await fn(x))
  }

  return results
}

Cette fonction parcourt l'itérable, collectant les résultats des promesses et renvoyant un tableau des résultats.

En utilisant ces techniques, vous pouvez exécutez facilement les promesses de manière séquentielle, en transmettant les paramètres d'un tableau, en garantissant l'ordre d'exécution et en collectant les résultats selon les besoins.

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