[2] イベントループにおける処理の単位をタスクといいます。
[3] タスクは、 イベントのディスパッチ、 構文解析、 コールバックの呼び出し、 fetch 結果の処理、 DOM 操作に対する反応といった、 色々な作業を担当するアルゴリズムです >>1。
[5] Webブラウザーの大部分の処理は、タスク (の集合) として定義されています。
[8] フォームは planned navigation としてタスクを持つことがあります。
[11] タスクは、次の状態を持ちます。click
イベントclick
イベントオブジェクト (あれば)。
triggered by user activation や window.open
を参照。null
。既定値は null
。タスクキュー参照。null
。既定値は null
。タスクキュー参照。
[6] タスクは、いずれかのイベントループに (タスクキューなどに追加されることにより) 所属し、実行されるものです >>1。基本的には作成されたイベントループに所属し、 他のイベントループに移動することはありませんが、 ポートメッセージキューのタスクのような例外もあります。
[9] 実装戦略によっては、タスクに他の最適化のための情報を付与する必要があるかもしれません。 例えば WebSocketメッセージの受信では、必要な I/O 処理のための資源が確保されるまで、 他のタスクを実行することが望ましいとされています。これの実現のためには、 イベントループがタスクキューからタスクを選んで実行するに当たり、 タスクがどのような資源を必要としており、それが直ちに利用可能であるか否かを判定しなければなりません。
[4] タスク・キューは、タスクの順序付きのリストです >>1。 タスクはタスク・キューに追加されることによって順に実行されていきます。
[18] Webブラウザーにおける非同期な処理は、すべてがタスクとして説明されているわけではありません。 資源の fetch の後の非同期な処理などは、安定状態に処理を再開するものとされています。
[23] タスクは特定のイベント・ループにより処理されることを意図したものです。 タスクに関連付けられた文書についてのタスクを処理するイベント・ループが1つあって、 その文書のタスクはすべてそのイベント・ループで処理されます。 >>1
[24] タスクとは別にマイクロタスクもあります。 かつては完全に別物として定義されていましたが、 現在ではマイクロタスクがタスクとしてタスクキューに追加されることもあります。