ホームページ ウェブフロントエンド フロントエンドQ&A Nodejsリクエスト終了後に関数を呼び出す方法

Nodejsリクエスト終了後に関数を呼び出す方法

Apr 05, 2023 pm 01:48 PM

Node.js 開発では、非同期リクエストを行うときにコールバック関数を呼び出す必要があることがよくありますが、このコールバック関数はリクエスト終了後にいくつかの操作を実行する役割を果たします。 Node.js によって提供される http モジュールは、http リクエストを開始するためによく使用されるモジュールであり、クライアントまたはサーバーの http リクエストに使用できます。

http モジュールでは、通常 http.get() または http.request() メソッドを使用して http リクエストを開始します。どちらのメソッドも非同期であり、要求が完了するのを待ってから戻ります。では、リクエストが終了した後にコールバック関数を呼び出すにはどうすればよいでしょうか?

方法 1: コールバック関数をパラメータとして渡す

http.get() メソッドと http.request() メソッドでは、どちらもコールバックを含めることができるパラメータ オプションを受け入れます。関数。このコールバック関数はリクエスト完了後に実行される関数です。

たとえば、http.get() メソッドを使用して Web ページのコンテンツを取得し、リクエストの完了後にそのコンテンツをコンソールに出力できます。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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);

  });

});

ログイン後にコピー

この例では、では、http.get() メソッドを通じて GET リクエストを送信し、http://www.example.com の Web ページのコンテンツを取得します。次に、無名関数をコールバック関数として定義することで、受信した応答データを連結してコンソールに出力します。

方法 2: Promise オブジェクトを使用する

コールバック関数をパラメーターとして渡すだけでなく、Promise オブジェクトを使用してリクエスト終了後の操作を処理することもできます。 Promise オブジェクトは ES6 の新機能で、Node.js の非同期メソッドで広く使用されています。

http モジュールでは、http.get() または http.request() メソッドを呼び出すことで Promise オブジェクトを返すことができます。この Promise オブジェクトでは、 then() メソッドを使用して、リクエストの終了後に実行される関数を設定できます。たとえば、Promise オブジェクトを使用して Web ページのコンテンツを取得し、リクエストの完了後にそのコンテンツをコンソールに出力できます。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

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);

  });

ログイン後にコピー

この例では、getRequest() という関数を使用して、 Promise オブジェクトを返します。 http.get() メソッドを Promise オブジェクトでラップし、リクエストの最後に、solve() 関数を通じて応答データを then() メソッドに渡します。エラーが発生した場合、エラー情報は、reject() 関数を通じて catch() メソッドに渡されます。次に、getRequest() メソッドを呼び出し、返された Promise オブジェクトで then() メソッドを定義することで、応答データを出力します。

概要

上記は、Node.js で http リクエストを開始し、リクエストの完了後に関数を呼び出す 2 つの方法です。コールバック関数をパラメータとして渡すか、Promise オブジェクトを使用することで、リクエストの終了後にカスタム アクションを実行できます。実際の開発では、特定の状況に応じて非同期リクエストを処理する適切な方法を選択できます。

以上がNodejsリクエスト終了後に関数を呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

怠zyなロードの概念を説明してください。 怠zyなロードの概念を説明してください。 Mar 13, 2025 pm 07:47 PM

怠zyなロードの概念を説明してください。

React和解アルゴリズムはどのように機能しますか? React和解アルゴリズムはどのように機能しますか? Mar 18, 2025 pm 01:58 PM

React和解アルゴリズムはどのように機能しますか?

UseEffectとは何ですか?副作用を実行するためにどのように使用しますか? UseEffectとは何ですか?副作用を実行するためにどのように使用しますか? Mar 19, 2025 pm 03:58 PM

UseEffectとは何ですか?副作用を実行するためにどのように使用しますか?

JavaScriptでカリーはどのように機能し、その利点は何ですか? JavaScriptでカリーはどのように機能し、その利点は何ですか? Mar 18, 2025 pm 01:45 PM

JavaScriptでカリーはどのように機能し、その利点は何ですか?

JavaScriptの高次関数とは何ですか?また、より簡潔で再利用可能なコードを書くためにどのように使用できますか? JavaScriptの高次関数とは何ですか?また、より簡潔で再利用可能なコードを書くためにどのように使用できますか? Mar 18, 2025 pm 01:44 PM

JavaScriptの高次関数とは何ですか?また、より簡潔で再利用可能なコードを書くためにどのように使用できますか?

各ライフサイクル方法の目的とそのユースケースを説明します。 各ライフサイクル方法の目的とそのユースケースを説明します。 Mar 19, 2025 pm 01:46 PM

各ライフサイクル方法の目的とそのユースケースを説明します。

Reactのパフォーマンス最適化手法(メモ化、コード分割、怠zyな読み込み)とは何ですか? Reactのパフォーマンス最適化手法(メモ化、コード分割、怠zyな読み込み)とは何ですか? Mar 18, 2025 pm 01:57 PM

Reactのパフォーマンス最適化手法(メモ化、コード分割、怠zyな読み込み)とは何ですか?

usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか? usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか? Mar 19, 2025 pm 03:59 PM

usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか?

See all articles