イベント ループと While ループのブロック
Node.js のイベント ループをブロックする while ループの概念は、固有の性質から生じます。
ノードのコア実行ループは、イベント キュー内のイベントを継続的にチェックします。イベントが利用可能になると、他のすべてのイベントをブロックしながら、関連するコールバック関数が実行されます。
ブロックがどのように発生するか:
元の質問で提供された例では、 while ループは open の値を繰り返しチェックします。イベント ループはループの実行によってブロックされるため、スケジュールされたタイムアウト コールバックを処理して、開いている変数を更新できません。
ブロックの結果:
このブロックにより、コードが期待どおりに動作しないため、オープン セサミ メッセージはログに記録されません。代わりに、ループは無限に回転し続けます。
解決策:
イベント ループのブロックを回避するには、イベント ベースのアプローチを使用するようにコードを再構築する必要があります。 while ループを使用する代わりに、open イベントのリスナーを登録し、そのリスナー内で必要なコードを実行する必要があります。
イベント リスナーを使用するコードの修正バージョンは次のとおりです。
<code class="javascript">// Listen for the open event emitter.on('open', function() { // Code to execute when the open event occurs console.log('open sesame'); });</code>
イベント リスナーを使用する利点:
以上がNode.js で While ループがイベント ループをブロックするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。