JavaScriptでは、マイクロタスクとマクロタスクは、JavaScriptイベントループによって管理される2種類のタスクです。これらの概念を理解することは、非同期運用を管理し、JavaScriptアプリケーションで正しい実行順序を確保するために重要です。
マイクロタスクは、現在のタスクが終了した後、できるだけ早く実行するようにスケジュールされるタスクです。これらは通常、約束によって作成され、現在の実行コンテキストが完了した直後に処理する必要がある操作を処理するために使用されます。マイクロタスクの例にはthen
The Handlers of a Promiseが含まれます。
マクロタスク(「タスク」と呼ばれることもあります)は、現在のタスクの後に実行され、すべてのマイクロタスクが終了するようにスケジュールされるタスクです。マクロタスクは通常、より一般的な非同期操作に使用され、マウスのクリック、タイムアウト、間隔などのイベントによって作成されます。例には、 setTimeout
CallbacksとsetInterval
コールバックが含まれます。
それらの間の重要な違いは、イベントループ内での実行のタイミングです。マイクロタスクは、他のマクロタスクが開始される前に実行されます。これにより、約束に依存する操作の応答時間が速くなります。
マイクロタスクとマクロタスクは、JavaScriptの実行順序を決定する上で重要な役割を果たします。イベントループがこれらのタスクをどのように処理するかの段階的な内訳は次のとおりです。
この順序により、マイクロタスクがマクロタスクよりも常に優先されることが保証されます。たとえば、マクロタスクの実行中に約束が解決した場合、そのthen
はマイクロタスクキューに追加され、次のマクロタスクが始まる前に実行されます。この優先順位付けは、特に複数の非同期アクションを扱う場合、予測可能な操作の順序を維持するのに役立ちます。
イベントループがマイクロタスクとマクロタスクを処理する方法の主な違いは、実行のタイミングと優先度にあります。
実行タイミング:
優先度:
開発者は、タイミングと実行の順序を効果的に管理するためにこの動作を理解して活用する必要があるため、この取り扱いのこの違いは、非同期JavaScriptアプリケーションの全体的なフローとパフォーマンスに影響します。
JavaScriptアプリケーションのマイクロタスクの一般的な例は次のとおりです。
then
ハンドラーを約束しcatch
キャッチ:約束が解決または拒否されると、そのハンドラーがマイクロタスクキューに追加されます。await
操作: async/await
を使用する場合、マイクロタスクを効果的にキューするのをawait
後のパーツ。queueMicrotask
機能:マイクロタスクをスケジュールする直接的な方法。JavaScriptアプリケーションにおけるマクロタスクの一般的な例は次のとおりです。
click
、 scroll
、 resize
ようなイベントは、マクロタスクとして処理されます。setTimeout
およびsetInterval
コールバック:タイマーと間隔で指定された遅延後に実行されるマクロタスクを作成します。requestAnimationFrame
コールバック:アニメーションに使用され、マクロタスクとしてスケジュールされます。マイクロタスクとマクロタスクの区別と、イベントループがそれらをどのように管理するかを理解することで、効率的で予測可能な非同期JavaScriptコードを書き込む能力を大幅に向上させることができます。
以上がJavaScriptのマイクロタスクとマクロタスクとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。