ホームページ > 記事 > ウェブフロントエンド > 非同期JavaScriptのマイクロタスクキューとコールバックキューの違いは何ですか?
非同期 JavaScript では、タスクをスケジュールするには Microtask Queue と Callback Queue の 2 つの方法があります。 JavaScript エンジンは、これら 2 つのキューを異なる方法で処理します。
Microtask Queue は、現在のタスクの後に実行されるタスク キューです。マイクロタスク キューは、コールバック キュー内の次のタスクに移動する前に、JavaScript エンジンによって処理されます。
次に、マイクロタスク キューの動作例を示します。
<!doctype html> <html> <head> <title>Examples</title> </head> <body> <div id="result"></div> <script> console.log('start'); setTimeout(function() { console.log('setTimeout'); }, 0); Promise.resolve().then(function() { console.log('promise resolve'); }); console.log('end'); </script> </body> </html>
上の例では、「setTimeout」コールバックが追加されています。キュー内のコールバックに。 「Promise.resolve」がマイクロタスクキューに追加されます。 JavaScript エンジンは、コールバック キューに入る前に、まずマイクロタスク キュー内のすべてのタスクを実行します。
したがって、上記のコードの出力は次のようになります (コンソール) -
start end promise resolve setTimeout
Callback Queue is 現在のタスクの後に実行されるタスクのキューです。 コールバック キュー マイクロタスク キュー内のすべてのタスクを実行した後、JavaScript エンジンによって処理されます。
次に、コールバック キューがどのように機能するかを示す例を示します。
<!doctype html> <html> <head> <title>Examples</title> </head> <body> <div id="result"></div> <script> console.log('start'); setTimeout(function() { console.log('setTimeout'); }, 0); console.log('end'); </script> </body> </html>
上の例では、'setTimeout' コールバックが追加されます。コールバックキューの真ん中に。 JavaScript エンジンは、現在のタスクのすべてのコードを実行した後、「setTimeout」コールバックを実行します。
したがって、上記のコードの出力は次のようになります (コンソール) -
start end setTimeout
#マイクロタスク キューと コールバック キュー間のいくつかの違いは次のとおりです。
キューは JavaScript エンジンによって処理され、その後、コールバックキュー内の次のタスク。 コールバックマイクロタスク キュー内のすべてのタスクが実行された後、キューは JavaScript エンジンによって処理されます。
キューの現在のタスクが完了した後に処理されます。 コールバックキューは、マイクロタスク キューが空になった後に処理されます。
キューは別のイベント ループで処理されます。 コールバックキューは同じイベント ループ内で処理されます。
結論
以上が非同期JavaScriptのマイクロタスクキューとコールバックキューの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。