ホームページ  >  記事  >  ウェブフロントエンド  >  Node.js のイベント ループを 1 つの記事で素早く理解する

Node.js のイベント ループを 1 つの記事で素早く理解する

青灯夜游
青灯夜游転載
2021-07-05 10:58:141629ブラウズ

この記事では、Node.js 非同期プログラミングのイベント ループを理解します。イベント ループは、ノードのノンブロッキング I/O を実装する上で非常に重要な部分です。イベント ループとノンブロッキング I/O はすべて、C ライブラリ LIBUV の基礎となる機能です。イベント ループとノンブロッキング I/O を理解すると、Node の非同期操作がどのように機能するかが理解できるようになります。

Node.js のイベント ループを 1 つの記事で素早く理解する

#ノード独自の実行モデルであるイベント ループにより、コールバック関数が非常に一般的になります。 [推奨学習: "nodejs チュートリアル "]

プロセスが開始されると、Node は while(true) のようなループを作成し、ループが実行されるたびに、実行される物理プロセスは Tick と呼ばれます。各 Tick のプロセスは、処理対象のイベントがあるかどうかを確認し、存在する場合はイベントとそれに関連するコールバック関数を取得します。関連するコールバック関数が存在する場合、それらが実行されます。次に、次のループに入ります。処理するイベントがなくなった場合は、プロセスを終了します。

Node.js のイベント ループを 1 つの記事で素早く理解する
フローチャートにチェックを入れてください

イベント ループは、Node.js のノンブロッキング I/O を実現する上で非常に重要な部分です。イベント ループとノンブロッキング I/O は、LIBUV C ライブラリの基礎となる機能です。イベント ループとノンブロッキング I/O を理解すると、Node.js の非同期操作がどのように機能するかが理解できるようになります。

コードによるイベント ループのシミュレート

const eventloop = {
  queue: [],
  // 循环方法
  loop() {
    // 不停的检测队列是否还有未循环的消息
    while (this.queue.length) {
      const callback = this.queue.shift();
      callback();
    }

    // 执行下一次循环
    // 小知识点 JS的 this绑定
    setTimeout(this.loop.bind(this), 50);
  },
  // 添加消息到队列
  add(callback) {
    this.queue.push(callback);
  },
};

eventloop.loop();

setTimeout(() => {
  eventloop.add(() => {
    console.log("第一个");
  });
}, 500);

setTimeout(() => {
  eventloop.add(() => {
    console.log("第二个");
  });
}, 800);

上記は、イベント ループの最も基本的な例です。それにメッセージを追加すると、次のメッセージが存在するかどうかを確認できます。処理されていないイベント。存在する場合は、イベント処理が実行されます。

各イベント ループは新しい呼び出しスタックです。

プログラミング関連の知識の詳細については、次を参照してください。 プログラミングビデオにアクセスしてください! !

以上がNode.js のイベント ループを 1 つの記事で素早く理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。