Problème :
Comment exécuter un rappel lorsque toutes les opérations asynchrones dans une boucle forEach ont terminé ?
Solution :
1. Utilisation d'un compteur simple :
Initialisez un compteur itemsProcessed à 0. Incrémentez le compteur dans le rappel de chaque fonction asynchrone. Lorsque itemsProcessed atteint la longueur totale du tableau, invoquez le rappel « tout est terminé ».
2. Utilisation des promesses ES6 :
Créez un tableau d'objets Promise représentant chaque opération asynchrone à l'aide de Promise.all. Lorsque toutes les promesses seront terminées, le rappel final sera exécuté.
3. Utilisation d'une bibliothèque asynchrone :
Utilisez des bibliothèques asynchrones comme async pour fournir des mécanismes permettant d'exprimer des rappels d'achèvement asynchrones.
Exemple révisé (méthode Counter) :
<code class="javascript">function callback() { console.log("All done!"); } var itemsProcessed = 0; [1, 2, 3].forEach((item, index, array) => { asyncFunction(item, () => { itemsProcessed++; if (itemsProcessed === array.length) { callback(); } }); });</code>
Résultat attendu révisé :
3 done 1 done 2 done All done!
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!