マクロタスク自然と理解とマイクロタスク

  マクロタスクおよびマイクロタスクにイベントループブラウザは、ブラウザのスタートは、タスクのマクロタスクを実行するために出かけ、このようなサイクルを実行するためのタスクをマクロタスク、その後、マイクロタスク内のすべてのタスクを実行します。

  

  メッセージのMarcotaskエッセンスは、ブラウザキュー複数のスレッド間の通信であるクロムに、各ページは、スレッドJS、スレッドレンダリング、IOスレッド、スレッドネットワークなどの複数のスレッドが存在することをプロセスに対応し、タイマースレッドは、等、これらのスレッド間の通信を実現するタスクキューオブジェクトへのタスク(postTask)を添加することによって得られます。

  ブラウザの様々なスレッドは彼らが死んで内部のためのループ内で実行し、常駐スレッドあり、各スレッドは、独自のキューいくつかのタスク、スレッドや自身がタスクキュータスクに追加する可能性がある他のスレッドを持っているpostTask、これらスレッドは、時間またはそれの誰かpostTaskウェイクを設定した時間までそのタスクキューのタスクの実行、またはスリープ状態にあるから削除されていきます。

 

  マイクロタスクは、マイクロタスクが現在のスレッドではなくタスクを介して他のスレッドpostTaskに属し、キューが実際に存在しています。しかし、そのようなPromise.thenとして、それの遅延実行、mutationObserveはこのタイプです。

 

  マクロは、複数のタスクキューを持つことができ、キューは唯一のマイクロタスクであり、メインスレッド上のタスクは、単にスクリプトで来た最初のマクロタスクであり、マクロタスクです確立する:スクリプトのsetTimeout、のsetInterval、requestAnimationFrameのなど、意志マイクロタスクの設立は、次のとおりである:約束のコールバック、process.nextTickと、マクロタスクキューが終了するがある場合、全体の内容はキューにマイクロタスクを実行し、その後、別のマクロは、タスクを実行するために、など。

 

おすすめ

転載: www.cnblogs.com/mufc/p/11445550.html