ホームページ > ウェブフロントエンド > jsチュートリアル > While ループが Node.js イベント ループをブロックするのはなぜですか?

While ループが Node.js イベント ループをブロックするのはなぜですか?

Barbara Streisand
リリース: 2024-11-02 22:13:30
オリジナル
619 人が閲覧しました

Why Can a While Loop Block the Node.js Event Loop?

while ループが Node.js イベント ループをブロックする理由

Node.js では、イベント ループが非同期のコアを形成しますプログラミング モデル、イベントの処理と実行を処理します。ただし、while ループによってこのプロセスが中断され、イベント ループがブロックされる可能性があります。

イベント ループを理解する

イベント ループは、次のシーケンス:

  • イベント キューからイベントを取得します。
  • 完了するまで各イベントに関連付けられたタスクを実行します。
  • イベント キューが空になるまで繰り返します。

while ループの影響

while ループを実行すると、JavaScript スレッドがタスクを完了できなくなります。これは、スレッドがまだループの実行でビジー状態であるため、イベント キューの後続のイベントを処理できないことを意味します。

例: 無限ループ

次のコードは、 while ループはイベント ループをブロックできます:

<code class="javascript">var done = false;

setTimeout(function() {
  done = true;
}, 1000);

while (!done) {
  /* no operation */
}

console.log("Done!");</code>
ログイン後にコピー

この例では、タイマーは 1 秒後に Done を true に設定しますが、while ループは無限に実行され続けるため、コンソール ログに到達することができません。

コードの書き換え

イベント ループのブロックを避けるために、イベント駆動型のアプローチを使用するようにコードを変更できます。

<code class="javascript">var done = false;

setTimeout(function() {
  done = true;
}, 1000);

const interval = setInterval(() => {
  if (done) {
    clearInterval(interval);
    console.log("Done!");
  }
}, 100);</code>
ログイン後にコピー

この改訂されたコードでは、間隔タイマーを使用して、done の値を定期的にチェックします。 Done が true になると、インターバル タイマーがクリアされ、コンソール ログが実行されます。このアプローチにより、タイマーが完了するのを待っている間に他のイベントをイベント ループで処理できるようになります。

以上がWhile ループが Node.js イベント ループをブロックするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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