ホームページ >ウェブフロントエンド >jsチュートリアル >While ループが Node.js イベント ループをブロックするのはなぜですか?
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 サイトの他の関連記事を参照してください。