Maison  >  Article  >  interface Web  >  Comment appeler la fonction après la fin de la requête nodejs

Comment appeler la fonction après la fin de la requête nodejs

PHPz
PHPzoriginal
2023-04-05 13:48:22457parcourir

Dans le développement Node.js, nous devons souvent appeler une fonction de rappel lors d'une requête asynchrone. Cette fonction de rappel est chargée d'effectuer certaines opérations une fois la requête terminée. Le module http fourni par Node.js est un module couramment utilisé pour lancer des requêtes http. Il peut être utilisé pour les requêtes http client ou serveur.

Dans le module http, nous utilisons généralement la méthode http.get() ou http.request() pour lancer une requête http. Les deux méthodes sont asynchrones dans la mesure où elles attendent la fin de la demande avant de revenir. Alors, comment appeler la fonction de rappel une fois la requête terminée ?

Méthode 1 : passer la fonction de rappel en paramètre

Dans la méthode http.get() et la méthode http.request(), elles acceptent toutes deux une option de paramètre, qui peut contenir une fonction de rappel. Cette fonction de rappel est la fonction à exécuter une fois la demande terminée.

Par exemple, nous pouvons utiliser la méthode http.get() pour obtenir le contenu d'une page Web et afficher le contenu sur la console une fois la requête terminée :

const http = require('http');

http.get('http://www.example.com', (res) => {
  let data = '';

  // 接收响应数据
  res.on('data', (chunk) => {
    data += chunk;
  });

  // 响应结束时输出结果
  res.on('end', () => {
    console.log(data);
  });
});

Dans cet exemple, nous l'envoyons via http. Méthode get() Une requête GET pour obtenir le contenu Web de http://www.example.com. Ensuite, nous concaténons les données de réponse reçues et les envoyons à la console en définissant une fonction anonyme comme fonction de rappel.

Méthode 2 : utiliser l'objet Promise

En plus de passer la fonction de rappel en tant que paramètre, nous pouvons également utiliser des objets Promise pour gérer les opérations une fois la requête terminée. L'objet Promise est une nouvelle fonctionnalité d'ES6, largement utilisée dans les méthodes asynchrones Node.js.

Dans le module http, nous pouvons renvoyer un objet Promise en appelant la méthode http.get() ou http.request(). Dans cet objet Promise, nous pouvons utiliser la méthode then() pour définir la fonction à exécuter une fois la requête terminée. Par exemple, nous pouvons utiliser un objet Promise pour obtenir le contenu d'une page Web et afficher le contenu sur la console une fois la requête terminée :

const http = require('http');

const getRequest = (url) => {
  return new Promise((resolve, reject) => {
    http.get(url, (res) => {
      let data = '';

      // 接收响应数据
      res.on('data', (chunk) => {
        data += chunk;
      });

      // 响应结束时输出结果
      res.on('end', () => {
        resolve(data);
      });
    }).on('error', (err) => {
      reject(err);
    });
  });
};

getRequest('http://www.example.com')
  .then((data) => {
    console.log(data);
  })
  .catch((err) => {
    console.error(err);
  });

Dans cet exemple, nous utilisons une fonction appelée getRequest() pour renvoyer un objet Promise. . Nous enveloppons la méthode http.get() dans un objet Promise et transmettons les données de réponse à la méthode then() via la fonction solve() à la fin de la requête. Si une erreur se produit, les informations sur l'erreur sont transmises à la méthode catch() via la fonction rejet(). Ensuite, nous générons les données de réponse en appelant la méthode getRequest() et en définissant la méthode then() dans l'objet Promise renvoyé.

Résumé

Il existe deux façons ci-dessus de lancer une requête http dans Node.js et d'appeler une fonction une fois la requête terminée. En passant une fonction de rappel en paramètre ou en utilisant un objet Promise, nous pouvons effectuer des actions personnalisées une fois la requête terminée. Dans le développement réel, nous pouvons choisir la méthode appropriée pour gérer les requêtes asynchrones en fonction de la situation spécifique.

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