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
Libérer: 2024-11-04 14:17:02
original
1013 Les gens l'ont consulté

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>
Copier après la connexion

Résultat attendu révisé :

3 done
1 done
2 done
All done!
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal