Comment exécuter les promesses de manière séquentielle, en passant les paramètres à partir d'un tableau?
var myArray = [1, 2, 3, 4, 5, 6]
function myPrommise(num){
return new Promise(res => {
window.setTimeout(()=>{
res( console.log("done: " + num) )
},2000)
})
}
myPrommise(myArray[0])
.then(x => myPrommise(myArray[1]))
.then(x => myPrommise(myArray[2]))
.then(x => myPrommise(myArray[3]))
.then(x => myPrommise(myArray[4]))
.then(x => myPrommise(myArray[5]))
Droit maintenant, si je exécuter l'instruction ci-dessus, il sera exécuté de manière séquentielle. Dans mon cas d'utilisation le tableau est rempli dynamiquement et j'ai besoin d'exécuter le myPromise()
fonction de chaque membre myArray
.
Comment puis-je faire un "pauseable boucle" qui passe en boucle pour chaque élément d'un tableau, d'exécuter myPromise
et d'attendre la promesse d'être résolus avant de poursuivre à la prochaine itération?
Promesse.Tout ce que vous voulez
Sur son propre, ce n'est pas suffisant, car il ne permettra pas de résoudre de manière séquentielle.
Sur son propre, ce n'est pas suffisant, car il ne permettra pas de résoudre de manière séquentielle.
OriginalL'auteur David Alsh | 2017-03-29
Vous devez vous connecter pour publier un commentaire.
Ne pas créer un tableau de promesses. Créer un tableau de fonctions retournant une promesse.
Promesses commence à fonctionner immédiatement après la création. Par conséquent, l'exécution séquentielle est assurée par la construction de la prochaine promesse seulement après la fin de l'actuel.
OriginalL'auteur jdh8
Vous pouvez utiliser
Array.réduire
.Bien sûr, cette approche simpliste ne fonctionnera pas si vous avez une promesse qui peut d'erreur, ou si vous avez besoin d'résultats précédents, de sorte que vous voudrez peut-être faire
sequencePromises
plus générique:Puis vous pouvez faire ce que vous voulez aussi longtemps que vous le retour d'une Promesse.
Enfin, vous pouvez bénéficier de cette aide:
Réunissant tout:
De cette façon, vous pouvez non seulement gérer le cas dans votre question, mais beaucoup de cas plus complexes.
OriginalL'auteur Pedro Castilho