Node.js はイベント駆動型の非同期 I/O フレームワークであり、イベント ループ (Event Loop) がそのコア メカニズムの 1 つです。イベント ループは、さまざまな種類のイベントを処理するために複数のイベント キューを維持します。では、イベントキューには何種類あるのでしょうか?
まず、Node.js イベント ループの基本的なプロセスを理解しましょう。 Node.js が起動すると、メイン スレッドとイベント ループ オブジェクトが作成されます。 Node.js プログラムは通常、ファイルの読み取りや HTTP リクエストの送信などの I/O 操作を実行することによって開始されます。これらの操作は Libuv ライブラリによって処理され、イベントをイベント ループ オブジェクトのイベント キューに追加します。
Node.js イベント ループには、次の 6 種類のイベント キューがあります。
- Timers Queue (タイマー キュー)
このキューで維持される すべてのタイマー イベントsetTimeout() および setInterval() 関数によって作成されたデータが時系列にリストされます。
- I/O キュー (I/O イベント キュー)
I/O イベント キューは、ファイルまたはネットワーク リクエストのデータが準備できたときなど、すべての非同期 I/O リクエストのコールバック関数を維持します。 . . Libuv ライブラリが I/O イベントの完了を検出すると、イベントのコールバック関数が I/O イベント キューに追加されます。
- Check Queue (検出イベントキュー)
イベント ループの各ラウンドで、タイマー キュー内のすべての I/O イベントとタイマー イベントが処理されると、イベント ループは到着検出イベント キュー、これは主に setImmediate() 関数によって追加されたイベントを処理するために使用されます。
- Close Callback Queue (コールバック キューを閉じる)
このキューは、socket.on('close', ...) によって追加されたすべてのコールバック関数を保存し、ソケットが閉じられたことを検出すると、非同期実行のために、コールバック関数がこのキューに追加されます。
- マイクロタスク キュー (マイクロタスク キュー)
マイクロタスク キューは、イベント ループ プロセスの現在のステージで実行され、イベント ループの各ステージの間に配置されます。 process.nextTick() 関数によって追加されたすべての Promise コールバック関数とイベントは、このキューに配置されます。
- ノード API キュー (ノード API キュー)
ノード API キューは、Node.js 内の C モジュールによって制御されます。DNS リクエストや HTTP 接続などの非同期イベントはキューの一部になります。
要約すると、Node.js イベント ループは 6 つの異なるタイプのイベント キューを維持し、それぞれタイマー イベント、I/O イベント、検出イベント、シャットダウン コールバック、マイクロタスクの処理に使用されます。ノード API およびその他の非同期イベント。
Node.js アプリケーションを開発する場合、開発者はプログラムの実行効率に対するイベント ループ メカニズムの影響を考慮する必要があります。イベント ループがどのように機能するか、また特定のイベントが実行を待機する別のイベント キューにどのようにキューに入れられるかを理解することは、効率的で信頼性の高い Node.js アプリケーションを作成するための鍵となります。
以上がNodejsにはイベントキューがいくつありますかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。