Maison  >  Article  >  interface Web  >  Comment récupérer des données de rappel dans le code asynchrone de Node.js ?

Comment récupérer des données de rappel dans le code asynchrone de Node.js ?

DDD
DDDoriginal
2024-10-21 17:55:31936parcourir

How to Retrieve Callback Data in Node.js's Asynchronous Code?

Node.js : appel de fonction et attente de réponse de rappel

Dans Node.js, développer du code asynchrone qui s'appuie sur des rappels présente des défis lorsque tenter de récupérer les données d'un rappel. Cet article explore un scénario dans lequel une fonction est conçue pour exécuter un appel d'API et renvoyer la réponse d'un rappel lambda. Cependant, la mise en œuvre initiale se heurte à des difficultés et ne parvient pas à atteindre le résultat escompté.

L'extrait de code fourni démontre une fonction simplifiée qui appelle une API et renvoie la réponse dans le lambda de rappel. Cependant, cette approche est imparfaite car la fonction revient immédiatement, rendant la réponse de rappel inaccessible.

Les tentatives d'attente forcée de la réponse de rappel à l'aide d'une boucle, comme indiqué dans le deuxième extrait de code, restent infructueuses. En effet, la boucle d'événements dans Node.js continue de traiter d'autres tâches en attendant le rappel.

Pour résoudre ce problème efficacement, Node.js utilise un modèle basé sur les événements. L'approche correcte consiste à accepter un paramètre de rappel dans la fonction. Lorsque le calcul est terminé, le rappel est invoqué, permettant à la fonction appelante de gérer le résultat.

Par exemple :

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

Dans cette fonction révisée, le rappel sert de mécanisme pour "renvoyer" la réponse à l'appelant d'origine. La fonction est invoquée comme suit :

<code class="javascript">myFunction(query, function(returnValue) {
  // Use the result within the callback instead of relying on a direct return
});</code>

En adoptant le paradigme événementiel de Node.js, les développeurs peuvent éviter les pièges liés à l'attente des rappels et tirer parti d'une approche plus efficace pour gérer le code 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