Ceci est mon exigence avec AngularJS:boucle attendre jusqu'à ce que toutes les promesses sont résolues avant la prochaine itération
for (var i = 0, len = self.Scope.data.length; i < len; i++)
{
var data = self.Scope.data[i];
var self = this;
//First asynchronous function
self.EcritureService.createNewData(data).then(() => {
})
//Second asynchronous function
self.OperationService.getOperation(data.idOperation).then((operation) => {
})
//Third asynchronous function
self.AccountService.getAccount(data.codeCompte).then((compte) => {
currentAccount = compte;
currentAccount.montant = currentAccount.montant+data.montant;
})
//Fourth one relies on the third result, So it must be executed sequentially
self.AccountService.updateAccount(currentAccount).then(() => {
})
}
// After all fetch loop's promises are resolved I want to execute some instructions here for to update the operation retrieved in the second function.
Je veux cette boucle iterator attendre jusqu'à ce que toutes les promesses sont résolus avant de passer à l'étape suivante de faire en sorte que tous les les travaux se font, de passer à la dernière fonctionnalité qui résident à l'extérieur du bloc de boucle
Pouvez-vous * s'il vous plaît * corriger votre indentation? – Bergi
JavaScript est monothread. La boucle 'for' sera terminée ** avant que ** des promesses soient résolues. La boucle ne peut pas être faite pour attendre. – georgeawg
Vous pouvez écrire votre logique comme si elle était synchrone, la mettre en fonction, et exécuter cette fonction via l'exécuteur synchrone [nsynjs] (https://github.com/amaksr/nsynjs). Voir la fonction "processus()" dans un exemple similaire ici: https://github.com/amaksr/nsynjs/blob/master/examples/browser-ajax-seq.js – amaksr