Node.js 開発では、非同期リクエストを行うときにコールバック関数を呼び出す必要があることがよくありますが、このコールバック関数はリクエスト終了後にいくつかの操作を実行する役割を果たします。 Node.js によって提供される http モジュールは、http リクエストを開始するためによく使用されるモジュールであり、クライアントまたはサーバーの http リクエストに使用できます。
http モジュールでは、通常 http.get() または http.request() メソッドを使用して http リクエストを開始します。どちらのメソッドも非同期であり、要求が完了するのを待ってから戻ります。では、リクエストが終了した後にコールバック関数を呼び出すにはどうすればよいでしょうか?
方法 1: コールバック関数をパラメータとして渡す
http.get() メソッドと http.request() メソッドでは、どちらもコールバックを含めることができるパラメータ オプションを受け入れます。関数。このコールバック関数はリクエスト完了後に実行される関数です。
たとえば、http.get() メソッドを使用して Web ページのコンテンツを取得し、リクエストの完了後にそのコンテンツをコンソールに出力できます。
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 ページのコンテンツを取得し、リクエストの完了後にそのコンテンツをコンソールに出力できます。
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 サイトの他の関連記事を参照してください。