nodejs イベント ループのステージ: 1. タイマー (タイマー) ステージ; 2. 保留中のコールバック ステージ; 3. アイドル、準備ステージ; 4. ポーリング (ポーリング) ステージ; 5. チェック (チェック) ステージ; 6. コールバックステージを閉じます。
#このチュートリアルの動作環境: Windows7 システム、nodejs バージョン 12.19.0、DELL G3 コンピューター。
nodejs イベント ループ
Node.js が開始すると、イベント ループが初期化されます。各イベント ループには 6 つのサイクル ステージ、nodejs タイム ループ、ブラウザーのイベントが含まれます全く違っていました。
注: 図の各ボックスは練習サイクルのフェーズと呼ばれ、これら 6 つのフェーズがイベント サイクルです。
#ステージの概要
##timers (タイマー):
このステージでは、- setTimeout ( ) および setInterval() はコールバック関数をディスパッチしました。 保留中のコールバック (I/O コールバック):
このステージでは、- close callbacks(close callbacks) と で指定されたものを除く、ほとんどすべてのコールバック関数が実行されます。 timers および setImmediate() スケジュールされたコールバック。 setImmediate は setTimeout(callback, 0) とほぼ同じです
idle (アイドル)、準備: このステージは内部でのみ使用されます。 -
poll (ポーリング):
新しい I/O イベントを取得します。適切な場合、ノードはこの段階でブロックします。 -
check (チェック):
setImmediate() で設定したコールバックがこの段階で呼び出されます。 -
close コールバック (イベントを閉じるためのコールバック):
この段階で、socket.on(‘close’,…) などのコールバックが呼び出されます。 -
イベント ループの各実行の間に、Node.js は非同期 I/O またはタイマーを待機しているかどうかを確認し、待機していない場合は自動的にシャットダウンします。
イベント ループがポーリング フェーズに入り、コードでタイマーが設定されていない場合、次のことが起こります:
ポーリング キューが空でない場合、イベント ループが実行されます。キューが空になるか、実行されたコールバックがシステムの上限に達するまで、キューを同期的に実行します;
ポーリング キューが空の場合、次のことが起こります: - - コードが次によってコールバックで設定されている場合setImmediate() を実行すると、イベント ループは結果ポーリング フェーズからチェック フェーズに入り、チェック フェーズでキューを実行します (チェック フェーズのキューは setImmediate によって設定されます)。
- コードで setImmediate(callback) が設定されていない場合、イベント ループはこの段階でブロックされ、コールバックがポーリング キューに追加されるまで待機し、コールバックが到着するとすぐに実行されます。 -
イベント ループがポーリング フェーズに入り、コードがタイマーを設定する場合:
ポーリング キューが空の状態になる場合 (つまり、ポーリング フェーズがアイドル)、イベント ループはタイマーをチェックします。1 つ以上のタイマーが到着した場合、イベント ループはループ順序でタイマー フェーズに入り、タイマー キューを実行します。
」]
以上がNodejs イベントループの段階は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。