Maison > interface Web > js tutoriel > le corps du texte

Comment résoudre l'attente de rappel et le blocage dans Node.js ?

Susan Sarandon
Libérer: 2024-10-21 17:50:44
original
584 Les gens l'ont consulté

How to Solve Callback Waiting and Blocking in Node.js?

En attente de rappels dans Node.js

Node.js, étant une plate-forme événementielle, encourage la programmation asynchrone, où les fonctions peuvent lancer des actions et continuer à s'exécuter sans attendre pour la réalisation de l'action. Cependant, il peut y avoir des scénarios dans lesquels vous souhaitez qu'une fonction attende qu'un rappel soit invoqué avant de renvoyer une valeur.

Considérez l'extrait de code suivant qui vise à effectuer un appel synchrone à l'aide de la méthode myApi.exec, qui accepte un rappel pour gérer la réponse :

function(query) {
  myApi.exec('SomeCommand', function(response) {
    return response;
  });
}
Copier après la connexion

Bien que l'intention soit de renvoyer la réponse reçue du rappel, ce code ne fonctionnera pas correctement et reviendra immédiatement, avant que le rappel ne soit exécuté.

Pour résoudre ce problème, Node.js adopte l'approche basée sur les événements, dans laquelle les fonctions ne doivent pas bloquer les résultats de rappel. Au lieu de cela, ils doivent accepter un paramètre de rappel et l'appelant doit fournir une fonction pour gérer le résultat.

La bonne façon d'écrire cette fonction est :

function(query, callback) {
  myApi.exec('SomeCommand', function(response) {
    // Additional processing...
    callback(response); // "Returning" the response via the callback
  });
}
Copier après la connexion

De cette façon, la fonction devient non bloquant et ne retournera aucune valeur tant que le rappel n'est pas exécuté. L'appelant doit l'utiliser comme suit :

myFunction(query, function(returnValue) {
  // Handle the return value here
});
Copier après la connexion

Cette approche basée sur les événements favorise la programmation asynchrone et empêche le blocage, ce qui est crucial pour des performances efficaces dans les applications Node.js.

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!