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

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

青灯夜游
リリース: 2021-07-07 19:34:18
転載
1753 人が閲覧しました

この記事では、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 までご連絡ください。
最新の問題
Node.js は何に使用されますか?
から 1970-01-01 08:00:00
0
0
0
node.js - サーバーポート80の問題
から 1970-01-01 08:00:00
0
0
0
javascript - node.js I/O最適化
から 1970-01-01 08:00:00
0
0
0
Vue と Node.js を学習する初心者の混乱
から 1970-01-01 08:00:00
0
0
0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート