ホームページ > ウェブフロントエンド > フロントエンドQ&A > Nodejs イベントループの段階は何ですか?

Nodejs イベントループの段階は何ですか?

青灯夜游
リリース: 2021-11-12 14:45:59
オリジナル
2373 人が閲覧しました

nodejs イベント ループのステージ: 1. タイマー (タイマー) ステージ; 2. 保留中のコールバック ステージ; 3. アイドル、準備ステージ; 4. ポーリング (ポーリング) ステージ; 5. チェック (チェック) ステージ; 6. コールバックステージを閉じます。

Nodejs イベントループの段階は何ですか?

#このチュートリアルの動作環境: Windows7 システム、nodejs バージョン 12.19.0、DELL G3 コンピューター。

nodejs イベント ループ

Node.js が開始すると、イベント ループが初期化されます。各イベント ループには 6 つのサイクル ステージ、nodejs タイム ループ、ブラウザーのイベントが含まれます全く違っていました。

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 チュートリアル
」]

以上がNodejs イベントループの段階は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート