Maison > interface Web > js tutoriel > le corps du texte

Comment exécuter un rappel après tous les rappels asynchrones dans une boucle « forEach » ?

Barbara Streisand
Libérer: 2024-11-06 04:19:03
original
852 Les gens l'ont consulté

How to Execute a Callback After All Asynchronous Callbacks Within a 'forEach' Loop Finish?

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();
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!