Maison  >  Article  >  interface Web  >  Comment gérer l'achèvement des rappels asynchrones dans Node.js ?

Comment gérer l'achèvement des rappels asynchrones dans Node.js ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-21 17:54:11280parcourir

How to Handle Asynchronous Callback Completion in Node.js?

Gestion des rappels asynchrones dans Node.js

Dans Node.js, lorsqu'il s'agit de rappels asynchrones, il est crucial de comprendre la nature fondamentalement non bloquante de la plateforme . Cet article aborde un défi courant : comment faire en sorte qu'une fonction attende la fin d'un rappel.

Considérez la fonction simplifiée suivante :

<code class="js">function(query) {
  myApi.exec('SomeCommand', function(response) {
    return response;
  });
}</code>

L'objectif est d'appeler myApi.exec et renvoie la réponse reçue dans le rappel. Cependant, ce code revient immédiatement, le rendant inefficace.

La solution basée sur les événements

L'architecture basée sur les événements de Node.js dicte que la « bonne » façon de gérer les rappels asynchrones est ne pas attendre. Au lieu de cela, les fonctions doivent accepter un paramètre de rappel qui sera invoqué à la fin de l'opération. L'appelant ne doit pas s'attendre à une valeur de « retour » traditionnelle mais plutôt fournir un rappel pour traiter le résultat.

<code class="js">function(query, callback) {
  myApi.exec('SomeCommand', function(response) {
    // additional processing...

    callback(response); // This "returns" the value to the caller
  });
}</code>

Utilisation :

<code class="js">myFunction(query, function(returnValue) {
  // Use the return value here
});</code>

Dans cette approche, la fonction ne bloque pas et permet à la boucle d'événements de continuer à traiter d'autres tâches. Lorsque le rappel est invoqué, la fonction fournie gère le résultat de manière asynchrone.

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!

Déclaration:
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