task

タスク (Web)

[2] イベントループにおける処理の単位をタスク (task) といいます。

仕様書

意味

[3] タスク (task) は、 イベントディスパッチ構文解析コールバックの呼び出し、 fetch 結果の処理、 DOM 操作に対する反応といった、 色々な作業を担当するアルゴリズムです >>1

文脈

[5] Webブラウザーの大部分の処理は、タスク (の集合) として定義されています。

[7] タスクキューとして、次のものがあります。

[8] フォームplanned navigation としてタスクを持つことがあります。

状態

[11] タスクは、次の状態を持ちます。

処理
アルゴリズム引数の集合。
triggered by user activationタスクかどうか
triggered by a user generated orientation change
click イベント
click イベントオブジェクト (あれば)。 triggered by user activationwindow.open を参照。
タイマー入れ子水準
タイマーの入れ子の実行に関する制御のための変数です。 タイマータスクにのみ存在します。
タスク源
タスク源タスクキュー参照。
文書
文書または null。既定値は nullタスクキュー参照。
fetch
fetch または null。既定値は nullタスクキュー参照。
順序
タスクキュー内での相互順序を表す値です。 未出荷済みポートメッセージキューが絡む場合を除けば、タスクキュー内でのみ比較されます。
捨てる処理
handle fetchタスクサービスワーカーを終端させる処理で捨てる時に使います。

[6] タスクは、いずれかのイベントループに (タスクキューなどに追加されることにより) 所属し、実行されるものです >>1。基本的には作成されたイベントループに所属し、 他のイベントループに移動することはありませんが、 ポートメッセージキュータスクのような例外もあります。

[9] 実装戦略によっては、タスクに他の最適化のための情報を付与する必要があるかもしれません。 例えば WebSocketメッセージの受信では、必要な I/O 処理のための資源が確保されるまで、 他のタスクを実行することが望ましいとされています。これの実現のためには、 イベントループタスクキューからタスクを選んで実行するに当たり、 タスクがどのような資源を必要としており、それが直ちに利用可能であるか否かを判定しなければなりません。

歴史

関連

[4] タスク・キューは、タスク順序付きリストです >>1タスクタスク・キューに追加されることによって順に実行されていきます。

[18] Webブラウザーにおける非同期な処理は、すべてがタスクとして説明されているわけではありません。 資源fetch の後の非同期な処理などは、安定状態に処理を再開するものとされています。

[23] タスクは特定のイベント・ループにより処理されることを意図したものです。 タスクに関連付けられた文書についてのタスクを処理するイベント・ループが1つあって、 その文書タスクはすべてそのイベント・ループで処理されます。 >>1

[24] タスクとは別にマイクロタスクもあります。 かつては完全に別物として定義されていましたが、 現在ではマイクロタスクタスクとしてタスクキューに追加されることもあります。