インターネットの発展、技術の進歩、インターネット アプリケーションの継続的な出現により、人々のネットワーク通信に対する需要はますます高まっています。これらのネットワーク通信の中で、http プロトコルが最も一般的な方式です。 nodejs では、http リクエストを簡単に送信してネットワーク通信を実現できます。この記事では、nodejsを使って複数のhttpリクエストを送信する方法を紹介します。
- http モジュール
nodejs では、http モジュールは http プロトコルを処理するために使用されるモジュールであり、HTTP サーバーとクライアントを作成するための実用的な API を提供します。 HTTP リクエスト、および HTTP リクエストの送信。
http モジュールを使用して http リクエストを送信するには、2 つのメソッドを使用できます。
- http.request(options[, callback]): http リクエストを送信し、http を返すために使用されます。 ClientRequest リクエストの構成、リクエストの送信、および応答の処理のためのメソッドを提供するオブジェクト。
- http.get(options[, callback]): http GET リクエストの送信に使用されます。このメソッドは、http.request メソッドのカプセル化です。リクエストは簡素化でき、リクエスト パラメータは URL 形式を使用して提供されます。
- Promise
非同期プログラミングは、nodejs の非常に一般的なプログラミング方法であることがわかっているため、Promise を使用して複数の http リクエストを非同期プログラミングすることができます。
Promise は将来の結果を表すオブジェクトであり、Promise 自体は関数パラメーターを受け取るコンストラクターです。関数には、成功と失敗のコールバック関数をそれぞれ表す、resolve と拒否という 2 つのパラメーターがあります。
Promise を使用する利点は、コールバック地獄の問題を解決し、コードをより読みやすく、保守しやすくできることです。
- async/await
ES6 で導入された async/await 構文シュガーにより、Promise を使用せずに非同期プログラミングを実装できるようになり、コードがより簡潔で明確になります。
async/await は実際に Promise を単純化してカプセル化します。async キーワードを使用して非同期関数を宣言し、await キーワードを使用して非同期操作の結果を待機します。これにより、プログラムの実行が可能になります。コールバック地獄の問題を避けるため。
以下では、Promise と async/await を使用して複数の http リクエストを送信します。
- Promise を使用して複数の http リクエストを送信する例
複数の Web サイトに対して http リクエストを開始し、これらの Web サイトから返された結果をマージしたいと想定します。
まず、以下に示すように、ターゲット URL とこれらのリクエストのリクエスト メソッド (ここでは GET メソッドを使用します) を格納する配列を作成します。
const targets = [ {url: 'https://www.baidu.com', method: 'GET'}, {url: 'https://www.google.com', method: 'GET'}, {url: 'https://www.bing.com', method: 'GET'}, ];
次に、受信する関数を定義します。ターゲット URL とリクエスト メソッド。http リクエストの送信とレスポンスの処理のための Promise オブジェクトを返します。この関数の実装は次のとおりです。
const http = require('http'); function sendRequest(target) { return new Promise((resolve, reject) => { const req = http.request(target, res => { let result = ''; res.setEncoding('utf8'); res.on('data', chunk => { result += chunk; }); res.on('end', () => { resolve(result); }); }); req.on('error', err => { reject(err); }); req.end(); }); }
上記の関数では、http.request メソッドを使用して http リクエストを送信し、res.on('data', .. .) イベント処理関数 、res.on('end', ...) イベント処理関数を使用してレスポンス終了後のロジックを処理し、最終的に受信したレスポンス データを Promise の結果として返します。
次のコードを使用して、この関数が適切に動作しているかどうかをテストできます。
sendRequest({url: 'https://www.baidu.com', method: 'GET'}) .then(result => { console.log(result); }) .catch(err => { console.error('An error occurred:', err); });
これで、複数のターゲット URL とリクエスト メソッドを受け取り、複数の http リクエストを送信してその結果をマージするための Promise オブジェクトを返す関数を定義できるようになりました。関数の実装は次のとおりです:
function sendMultiRequests(targets) { return Promise.all(targets.map(target => { return sendRequest(target); })); }
上記の関数では、Promise.all メソッドを使用して、複数の Promise オブジェクトを新しい Promise オブジェクトにカプセル化します。現在のすべての Promise が成功すると、返される Promise は次のようになります。いずれかの Promise が失敗すると、返された Promise も失敗します。
この関数を使用して、複数の http リクエストを送信し、その結果をマージできるようになりました。
sendMultiRequests(targets) .then(results => { console.log('All requests completed.'); console.log('Results:'); console.log(results); }) .catch(err => { console.error('An error occurred:', err); });
すべての http リクエストが完了すると、結果が結合されて出力されます。
- async/await を使用して複数の http リクエストを送信する例
ES6 では、async/await 構文を使用して非同期プログラミングを実装できます。上記のコードは、async/await を使用して実装できます。この実装の核心は、Promise を非同期関数としてカプセル化し、await キーワードを使用して非同期操作の完了を待つことです。
以下は、async/await を使用して複数の http リクエストを送信する例です。
async function sendRequests(targets) { const results = await Promise.all(targets.map(async target => { const result = await sendRequest(target); return result; })); return results; }
上記のコードでは、複数の http リクエストを送信し、その結果を待つ非同期関数 sendRequests を定義します。 Promise.all メソッドは Promise オブジェクトを返します。すべての Promise が成功すると、返された Promise も成功します。いずれかの Promise が失敗した場合、返された Promise も失敗します。 await キーワードを使用して Promise オブジェクトの完了を待ち、結果を results 配列に直接割り当てます。
次のコードを使用して、この非同期関数が適切に動作しているかどうかをテストできます。
sendRequests(targets) .then(results => { console.log('All requests completed.'); console.log('Results:'); console.log(results); }) .catch(err => { console.error('An error occurred:', err); });
すべての http リクエストが完了すると、結果が結合されて出力されます。
- 概要
この記事では、nodejs を使用して複数の http リクエストを送信する 2 つの方法を紹介します。 1 つ目の方法は、Promise を使用して複数の http リクエストを送信し、その結果をマージすることです。 2 番目の方法は、async/await 構文シュガーを使用して複数の http リクエストを送信し、その結果を待つことです。 Promise を使用するか、async/await を使用するかに関係なく、複数の http リクエストの非同期プログラミングを簡単に実装でき、コードがより読みやすく、保守しやすくなります。
以上がnodejs は複数の http リクエストを送信しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

raceslimitationsinclude:1)asteeplearningcurveduetoitsvastecosystem、2)seochallengeswithsclient-siderEndering、3)潜在的なパフォーマンスのinlargeapplications、4)complenstatemanagementasappsgrow、and5)suneedtokeepupwithovolution

ReactisChallengingを使用して、SteepLearNdParadigMshiftOconpontenAchitecture.1)startisofficialdocumentation forasolidfoundation.2)relondingjsxandjavascriptwithinit.3)LearntousefunctionalcompotontiTateを理解してください

coreChallengeingEneratingは、duniqueys consinistinsidentifientiversre-renderseforeffiencedomupdates.1)aseenaturalKeysisisisisisisisedisederiableiableiaibuniqueandStable.2)denatekeysBaseTheBasedOnMultipreattributive.2)を無効にすることを非難することを解決します

javascriptfatigueinReactismainageable with rikeislikedivedingingindininginginformationscors.1)whatyouneedwhenyouneedit、focusingonprojectrelevance.2)

ESTESTROACTCOMPONENTSINGTHESESTATEHOOK、USEJESTANDREACTINTINGLIBRARYTOSIMULATE INTERACTIONSIONDANDVERIFYISTAMESISINTHEUI.1)RENDERTHECONCENTANDCHECKECHINITATA.2)SimulateUserIractionSionsionsionsionsionsionslikeClickSorformSubmissions.3)

keysinReactarecialforptimizingperformancebyididingineffictientListupdates.1)usekeystoidentifideidifyandtracklistelements.2)ArrayIndicesassyStopreventPerformanceSues.3)suoseStableidedifierslikeItem.idtomaincomentaindtateandiproveperift

ReactKeySareUniqueIdentifiersiersiderSuredStrovereconconiniationEfficiency.1)theyctrackChangesinListitems、2)sultanduniqueidentifiersiirsiTeemidssisssississmendを使用して、3)ArrayIndicesAssayStopReventisSuseSUSEORINGを回避します

sinqueysarecrucialinReactforoptimizing andMaintainingcomponentStateIntegrity.1)useanaturaluniqueidentifierfromyourdataifaibable.2)ifnonaturalidentifierexists、発電済みのKeyusingingingingalibrarylikuuid.3)


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

WebStorm Mac版
便利なJavaScript開発ツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

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