ホームページ  >  記事  >  ウェブフロントエンド  >  非同期JavaScriptのマイクロタスクキューとコールバックキューの違いは何ですか?

非同期JavaScriptのマイクロタスクキューとコールバックキューの違いは何ですか?

PHPz
PHPz転載
2023-08-24 09:33:02587ブラウズ

异步 JavaScript 中微任务队列和回调队列有什么区别?

非同期 JavaScript では、タスクをスケジュールするには Microtask QueueCallback Queue の 2 つの方法があります。 JavaScript エンジンは、これら 2 つのキューを異なる方法で処理します。

Microtask Queue

Microtask Queue は、現在のタスクの後に実行されるタスク キューです。マイクロタスク キューは、コールバック キュー内の次のタスクに移動する前に、JavaScript エンジンによって処理されます。

次に、マイクロタスク キューの動作例を示します。

<!doctype html>
<html>
<head>
   <title>Examples</title>
</head>
<body>
   <div id="result"></div>
   <script>
      console.log(&#39;start&#39;);
 
      setTimeout(function() {
         console.log(&#39;setTimeout&#39;);
      }, 0);
 
      Promise.resolve().then(function() {
         console.log(&#39;promise resolve&#39;);
      });
 
      console.log(&#39;end&#39;);
   </script>
</body>
</html>

上の例では、「setTimeout」コールバックが追加されています。キュー内のコールバックに。 「Promise.resolve」がマイクロタスクキューに追加されます。 JavaScript エンジンは、コールバック キューに入る前に、まずマイクロタスク キュー内のすべてのタスクを実行します。

したがって、上記のコードの出力は次のようになります (コンソール) -

start
end
promise resolve
setTimeout

Callback Queue

Callback Queue is 現在のタスクの後に実行されるタスクのキューです。 コールバック キュー マイクロタスク キュー内のすべてのタスクを実行した後、JavaScript エンジンによって処理されます。

次に、コールバック キューがどのように機能するかを示す例を示します。

<!doctype html>
<html>
<head>
   <title>Examples</title>
</head>
<body>
   <div id="result"></div>
   <script>
      console.log(&#39;start&#39;);
 
      setTimeout(function() {
         console.log(&#39;setTimeout&#39;);
      }, 0);
 
      console.log(&#39;end&#39;);
   </script>
</body>
</html>

上の例では、'setTimeout' コールバックが追加されます。コールバックキューの真ん中に。 JavaScript エンジンは、現在のタスクのすべてのコードを実行した後、「setTimeout」コールバックを実行します。

したがって、上記のコードの出力は次のようになります (コンソール) -

start
end
setTimeout

マイクロタスク キューとコールバック キューの違い

#マイクロタスク キューと コールバック キュー間のいくつかの違いは次のとおりです。

  • ##マイクロタスク

    キューは JavaScript エンジンによって処理され、その後、コールバックキュー内の次のタスク。 コールバックマイクロタスク キュー内のすべてのタスクが実行された後、キューは JavaScript エンジンによって処理されます。

  • Microtask

    キューの現在のタスクが完了した後に処理されます。 コールバックキューは、マイクロタスク キューが空になった後に処理されます。

  • マイクロタスク

    キューは別のイベント ループで処理されます。 コールバックキューは同じイベント ループ内で処理されます。

  • マイクロタスク キューの利点

    マイクロタスク キューのいくつかの利点コールバック キュー上のマイクロタスク キューは-

      マイクロタスク キューは次のとおりです。別のイベント ループで処理されます。つまり、メイン スレッドがブロックされても、マイクロタスク キューは引き続き処理されます。
    • マイクロタスク キューは、現在のタスクが完了した後に処理されます。これは、任意のコードを意味します。現在のタスクに依存するタスクはマイクロタスク キューに追加され、処理されます。現在のタスクが完了した直後に実行されます。
    • マイクロタスク キューはコールバック キューよりも高い優先順位を持っています。つまり、両方のキューが同時に実行されるようにスケジュールされている場合、マイクロタスク キューが最初に実行されます。
    • コールバック キューの利点

    マイクロタスク キューに対するコールバック キューの利点の 1 つは、コールバック キューがメインと同じイベント ループで処理されることです。糸。これは、メインスレッドがブロックされている場合、コールバック キューは処理されないことを意味します。

    結論

    このチュートリアルでは、非同期 JavaScript におけるマイクロタスク キューとコールバック キューの違いについて説明しました。各コホートのメリットも調べました。

    以上が非同期JavaScriptのマイクロタスクキューとコールバックキューの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。