Maison >interface Web >js tutoriel >Comment gérer efficacement les rappels asynchrones avec des modèles de promesse ?
Gérer les rappels asynchrones avec des modèles de promesse
Étant donné un ensemble de rappels asynchrones, il est souvent nécessaire de différer l'exécution jusqu'à ce que tous les rappels soient terminés. Ce scénario se produit dans des situations où les données doivent être accumulées ou traitées collectivement au cours de plusieurs opérations asynchrones.
Approche de comptage manuel
Une approche consiste à suivre manuellement l'état d'achèvement de chaque rappel. Un tableau, terminé, est initialisé avec des valeurs booléennes représentant l'état d'achèvement de chaque rappel. À mesure que chaque rappel est appelé, l'élément correspondant dans done est défini sur true. Une boucle while est ensuite utilisée pour vérifier en permanence si tous les éléments de done sont définis sur true. Une fois terminé, le traitement souhaité peut être exécuté.
Utilisation des promesses jQuery
Dans jQuery, $.ajax() renvoie une promesse, qui représente l'achèvement éventuel d'un requête asynchrone. En tirant parti des promesses, une approche plus élégante peut être utilisée :
Promesses standard ES6
Les navigateurs modernes et les environnements node.js prennent en charge les promesses natives. Si disponible, vous pouvez utiliser la fonction Promise.all :
Polyfilling Promises
Dans les environnements plus anciens sans prise en charge native des promesses, vous pouvez utiliser une bibliothèque comme BabelJS ou un polyfill de promesse pour émuler la fonctionnalité de promesse.
Regroupement d'opérations sans promesse
🎜>
Si vos opérations asynchrones ne renvoient pas de promesses, vous pouvez les "promettre" en les enveloppant dans une fonction qui renvoie une promesse et la résout avec le résultat ou la rejette en cas d'erreur. Les fonctions promises peuvent ensuite être utilisées conjointement avec les promesses comme décrit ci-dessus.
Bibliothèques de promesses tiercesLes bibliothèques comme Bluebird fournissent des fonctions utilitaires supplémentaires pour gérer les opérations asynchrones. Par exemple, Promise.map peut être utilisé pour appliquer une opération asynchrone à chaque élément d'un tableau, renvoyant une seule promesse qui se résout en un tableau de tous les résultats.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!