Maison > interface Web > js tutoriel > le corps du texte

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

Mary-Kate Olsen
Libérer: 2024-10-20 14:59:02
original
447 Les gens l'ont consulté

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

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

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

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!

source:php
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!