Maison > interface Web > js tutoriel > Comment exécuter une fonction de rappel après un traitement asynchrone dans une boucle ForEach ?

Comment exécuter une fonction de rappel après un traitement asynchrone dans une boucle ForEach ?

Susan Sarandon
Libérer: 2024-11-04 15:10:02
original
250 Les gens l'ont consulté

How to Execute a Callback Function After Asynchronous Processing within a ForEach Loop?

Achèvement du rappel après un traitement itératif asynchrone

Énoncé du problème :

Étant donné un tableau d'éléments, comment pouvons-nous invoquer un fonction de rappel une fois tous les traitements asynchrones terminés dans une boucle forEach ?

Solution 1 : approche basée sur un compteur

  • Incrémenter un compteur dans chaque rappel asynchrone.
  • Exécuter le rappel « done » lorsque le compteur atteint le nombre total d'éléments.
<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

Solution 2 : approche basée sur les promesses

Exécution synchrone :

  • Promets en chaîne en utilisant réduire() et Promise.resolve() pour garantir une exécution synchrone.
<code class="javascript">let requests = [1, 2, 3].reduce((promiseChain, item) => {
  return promiseChain.then(() => new Promise((resolve) => {
    asyncFunction(item, resolve);
  }));
}, Promise.resolve());

requests.then(() => console.log('done'));</code>
Copier après la connexion

Exécution asynchrone :

  • Créez un tableau de promesses à l'aide de map().
  • Utilisez Promise.all() pour invoquer le rappel « done » lorsque toutes les promesses sont terminées. résolu.
<code class="javascript">let requests = [1, 2, 3].map((item) => {
  return new Promise((resolve) => {
    asyncFunction(item, resolve);
  });
});

Promise.all(requests).then(() => console.log('done'));</code>
Copier après la connexion

Solution 3 : Utilisation de la bibliothèque asynchrone

  • Exploitez les bibliothèques comme async pour simplifier les modèles de programmation asynchrone.
  • Référez-vous à la documentation spécifique pour les mécanismes de complétion de rappel fournis par la bibliothèque.

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