Maison  >  Article  >  interface Web  >  Comment exécuter des promesses de manière séquentielle avec les paramètres d'un tableau rempli dynamiquement ?

Comment exécuter des promesses de manière séquentielle avec les paramètres d'un tableau rempli dynamiquement ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-20 15:00:30393parcourir

How to Execute Promises Sequentially with Parameters from a Dynamically Populated Array?

Chaînage de promesses : exécuter des promesses de manière séquentielle avec les paramètres d'un tableau

Dans la programmation asynchrone, les promesses offrent un mécanisme robuste pour gérer les opérations asynchrones. Dans ce scénario, vous cherchez à exécuter une fonction de promesse de manière séquentielle pour chaque élément d'un tableau, tout en vous assurant que chaque promesse est résolue avant de passer à la suivante.

Remplissage dynamique des tableaux et exécution des promesses

Votre objectif est de remplir dynamiquement un tableau avec des données et d'exécuter une fonction de promesse pour chaque élément du tableau. Cependant, l'approche actuelle via le chaînage .then() dans une boucle présente des limites lorsque le tableau est rempli dynamiquement. Pour résoudre ce problème, nous présentons deux solutions optimales :

Fold Expressions :

  1. Créez un tableau de promesses avec myArray.reduce().
  2. Résolvez le tableau de promesses dans un ordre séquentiel à l'aide de Promise.resolve().

Cette approche mappe efficacement chaque élément du tableau à sa promesse et les exécute dans l'ordre. Cependant, cela peut entraîner une surcharge de mémoire élevée si la taille du tableau est importante.

Fonctions asynchrones :

  1. Utilisez une fonction asynchrone pourEachSeries().
  2. Parcourez le tableau et attendez la résolution de chaque promesse en utilisant wait action(x).

Les fonctions asynchrones offrent l'avantage de la concision, de la lisibilité et de l'utilisation optimale de la mémoire (O(1) ). De plus, vous pouvez étendre cette approche pour collecter les valeurs de retour.

Extrait :

<code class="javascript">const forEachSeries = async (iterable, action) => {
  for (const x of iterable) {
    await action(x);
  }
};

forEachSeries(myArray, myPromise).then(() => {
  console.log('all done!');
});</code>

Cet extrait mis à jour résout votre besoin d'exécuter les promesses de manière séquentielle à partir d'un tableau rempli dynamiquement. , en veillant à ce que chaque promesse soit résolue avant de passer à la suivante.

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