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!