JavaScriptのイベントループの理解:包括的なガイド
javascriptは、シングルスレッドであるため、コードを順番に実行します。 これは、メインスレッドをブロックして無反応を引き起こす可能性のある非同期操作(サーバーデータの取得やユーザーインタラクションなど)を扱う際の課題を提示します。 解決策? イベントループ。この記事では、イベントループの段階的な説明を提供し、JavaScriptがコード実行、タスク、および非同期操作をどのように管理するかを明確にします。 イベントループが説明しました
イベントループは、JavaScriptのシングルスレッドアーキテクチャが非同期タスクを効率的に処理できるコアメカニズムです。 コールスタック、Web API、コールバックキュー、マイクロタスクキュー間の相互作用を調整することにより、ブロッキングを防ぎます。これらのコンポーネントを調べてみましょう。
イベントループの重要なコンポーネント
setTimeout()
コールバックキュー(タスクキュー):fetch
非同期操作が終了すると、その関連するコールバック関数がこのキューに配置され、実行を待っています。
MutationObserver
ステップバイステップの例
コードを使用してイベントループの操作を説明しましょう。
start
"が削除されます。 はコールスタックに追加されます。 Web APIでコールバックを登録し、削除します。コールバックはWeb APIで待機し、そのタイマーは0ミリ秒に設定されています。が追加され、logs "
endconsole.log("Start")
コールスタックが空になりました。イベントループでは、タスクキューをチェックします。コールバックは、タイマーの有効期限が切れた後、Web APIからタスクキューに移動します。イベントループはそれをコールスタックに押し込み、「タイムアウトコールバックsetTimeout()
console.log("End")
出力:
javaScriptは別のレイヤーを追加します:マイクロタスク、主に約束に関連付けられています。 マイクロタスクが優先順位を付けられています。コールバックキューのタスクの前に、同期コードの直後に実行します。 この例を考えてみましょう:
実行フロー:
および
」と「
console.log("Start")
」を記録します
console.log("End")
のコールバックは、Web APIでスケジュールされています
'sコールバックがマイクロタスクキューに追加されます
setTimeout()
」を記録します。
Promise.resolve()
.then()
以上がJavaScript イベントループを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。