Rappels forEach asynchrones : implémentation d'un rappel d'achèvement
Dans les scénarios où une boucle asynchrone comme forEach est utilisée, il est souvent nécessaire de déclencher un rappel une fois que toutes les opérations asynchrones sont terminées. Ce guide présente plusieurs approches pour réaliser cette fonctionnalité.
1. Utilisation d'un compteur simple
Cette technique utilise un compteur qui s'incrémente à chaque fois qu'un élément est traité. Lorsque le compteur atteint le nombre total d'éléments, le rappel d'achèvement est invoqué.
function callback () { console.log('all done'); } var itemsProcessed = 0; [1, 2, 3].forEach((item, index, array) => { asyncFunction(item, () => { itemsProcessed++; if(itemsProcessed === array.length) { callback(); } }); });
2. Tirer parti des promesses ES6
Les promesses permettent de créer une chaîne de promesses séquentielles, garantissant une exécution synchrone des tâches asynchrones.
function asyncFunction (item, cb) { setTimeout(() => { console.log('done with', item); cb(); }, 100); } let requests = [1, 2, 3].reduce((promiseChain, item) => { return promiseChain.then(() => new Promise((resolve) => { asyncFunction(item, resolve); })); }, Promise.resolve()); requests.then(() => console.log('done'))
3. Utiliser une bibliothèque asynchrone
Les bibliothèques comme « async » fournissent des mécanismes pour exprimer la fonctionnalité souhaitée. L'implémentation spécifique variera en fonction de la bibliothèque choisie.
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!