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!