Comment retourner beaucoup de Promesses dans une boucle et attendre pour eux de tout faire d'autres choses
J'ai une boucle qui appeler une méthode que de faire des trucs asynchornously. Cette boucle peut appeler la méthode beaucoup de temps. Après cette boucle, j'ai une boucle qui doivent être exécutées que lorsque tous les asynchrones truc est fait. Donc c'illustrer mon veut :
for(i=0;i<5;i++){
doSomeAsyncStuff();
}
for(i=0;i<5;i++){
doSomeStuffOnlyWhenTheAsyncStuffIsFinish();
}
Je ne suis pas familier avec beaucoup d'promet donc quelqu'un pourrait-il m'aider à réaliser ceci?
C'est comment mon doSomeAsyncStuff()
comporter :
doSomeAsyncStuff{
var editor = generateCKEditor();
editor.on('instanceReady',function(evt){
doSomeStuff();
//There should be the resolve() of the promises I think.
})
}
J'ai peut-être faire quelque chose comme ça :
doSomeAsyncStuff{
var editor = generateCKEditor();
return new Promises(function(resolve,refuse){
editor.on('instanceReady',function(evt){
doSomeStuff();
resolve(true);
})
}
}
Mais je ne suis pas sûr de la syntaxe.
- Êtes-vous en contrôle des appels asynchrones? - Ils déjà de retour des promesses, ou vous pouvez les faire revenir promesses?
- Quelle est exactement la séquence? Avez-vous besoin d'appeler les autres fonctions après que toutes les précédentes async sont finis? Ou avez-vous juste besoin de faire appel d'une fonction après chaque async sont finis?
- Pour l'instant, la première fonction ne retourne pas de promesses. Ce que j'ai à mettre en œuvre. Je veux éditer mon message pour ajouter quelques détails du flux de travail de mes fonctions. Et oui j'ai besoin que tous les trucs de la première boucle à terminer avant de commencer à exécuter les trucs dans la deuxième boucle.
- Yep merci, j'écris pour rapide ^^
- Re votre edit: "j'ai Peut-être faire quelque chose comme ça" Ouais, très bien comme ça, sauf qu'il n'y est pas
s
à la fin dePromise
.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
Promise.all
(spec, MDN) pour qui: Il accepte un tas de promesses faites et vous donne une seule promesse qui est résolu lorsque toutes celles que vous avez donné sont résolus, ou rejeté lorsque l'un d'eux est rejetée.Donc, si vous faites
doSomeAsyncStuff
retour d'une promesse, alors:Axel Rauschmayer a un bon article sur les promesses ici.
Voici un exemple - vivre copie sur Babel est REPL:
JS:
(Ne vous embêtez pas avec
.catch
sur ce point, mais vous ne voulez.catch
sur votre monde réel, comme indiqué plus haut.)Exemple de sortie (en raison de la
Math.random
, ce qui termine premier peut varier):Math.floor(Math.random() * 1000)
à(i * 1000)
doSomethingAsync(i)
retourne une promesse comment attendre pour que pour finir le long de avec d'autres dans la boucle?