Maison >interface Web >js tutoriel >Comment garantir qu'un rappel est exécuté une fois toutes les opérations asynchrones terminées dans une boucle forEach ?

Comment garantir qu'un rappel est exécuté une fois toutes les opérations asynchrones terminées dans une boucle forEach ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-04 14:17:021024parcourir

How to Ensure a Callback is Executed After All Asynchronous Operations in a forEach Loop Complete?

Rappel d'achèvement asynchrone forEach

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn