Maison > Article > interface Web > Comment exécuter un rappel après tous les rappels asynchrones dans une boucle « forEach » ?
Exécution de rappel asynchrone après l'itération « forEach »
Requête :
Comment un rappel peut-il être exécuté une fois que tous les rappels asynchrones d'une boucle 'forEach' sont terminés ?
Solution :
Array.forEach ne prend pas automatiquement en charge cette fonctionnalité. Il existe cependant plusieurs approches alternatives pour atteindre cet objectif :
1. Compteur :
Gardez une trace du nombre d'articles traités à l'aide d'un compteur. Incrémentez le compteur dans le rappel de chaque opération asynchrone et invoquez le rappel final lorsque le compteur atteint le nombre total d'éléments.
2. Promesses (ES6) :
a. Exécution séquentielle :
La chaîne promet en séquence de garantir l'exécution synchrone des tâches asynchrones, en garantissant que chaque élément est traité dans l'ordre dans lequel il apparaît dans le tableau.
b. Exécution parallèle :
Utilisez la méthode Promise.all() pour exécuter toutes les tâches asynchrones en parallèle sans garantir l'ordre d'exécution.
3. Bibliothèque Async :
Les bibliothèques populaires comme Async.js fournissent des mécanismes pour exprimer le comportement requis, tels que Async#series() et Async#parallel().
Exemple d'implémentation original (synchrone) :
Le code original de la question illustre un scénario synchrone, et l'implémentation suivante peut être utilisée :
posts.foreach(function(v, i) { res.write(v + ". index " + i); }); res.end();
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!