Attendre simultanément les fonctions de rappel asynchrones
Réaliser la synchronisation de plusieurs fonctions de rappel asynchrones peut être un défi. Dans les scénarios où vous exigez l'achèvement de toutes les fonctions avant de continuer, il est crucial de mettre en œuvre un mécanisme pour attendre leur achèvement.
Compteur manuel avec tableau
Un simple L'approche implique l'utilisation d'un tableau de booléens nommés « done » pour suivre l'état du rappel. Dans chaque fonction de rappel, définissez done[i] sur true pour indiquer son achèvement. Créez une boucle qui vérifie en permanence si toutes les entrées de "done" sont définies sur true. Une fois qu'ils le sont, procédez au calcul requis.
JQuery Promises
La méthode $.ajax() de jQuery renvoie une promesse, qui vous permet d'enchaîner et de gérer des opérations asynchrones. . En utilisant $.when(), vous pouvez créer un tableau de promesses et attendre qu'elles soient toutes résolues. Lorsque toutes les promesses sont résolues, les résultats sont disponibles dans les arguments de la fonction de rappel.
Promesse standard ES6
Si votre environnement prend en charge les promesses natives, vous pouvez utiliser Promise.all (). Cette méthode prend un tableau de promesses et renvoie une seule promesse qui se résout une fois que toutes les promesses d'entrée ont été résolues. Vous pouvez ensuite accéder aux résultats de chaque promesse dans la fonction de rappel.
Opérations asynchrones prometteuses
Si une opération asynchrone particulière ne renvoie pas de promesse, vous pouvez créer manuellement une promesse pour cela. Enfermez l'opération asynchrone dans une fonction et utilisez une méthode solve() dans le rappel pour renvoyer le résultat sous forme de promesse.
Bluebird Promises
Bluebird, une promesse populaire bibliothèque, étend les fonctionnalités des promesses standard. Promise.map() vous permet de mapper et d'exécuter facilement des opérations asynchrones sur un tableau de données, simplifiant ainsi le processus d'attente de plusieurs fonctions de rappel.
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!