-
Notifications
You must be signed in to change notification settings - Fork 4
/
575.txt
70 lines (54 loc) · 4.49 KB
/
575.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
[2] [[イベント・ループ]]における処理の単位を[DFN[[RUBYB[タスク]@en[task]]]]といいます。
* 仕様書
[REFS[
- [1] '''[CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-03-28 21:58:58 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#task-queue>'''
- [19] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-03-28 21:58:58 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#the-event-loop>
]REFS]
* 分類
[3] [[タスク]]には次の種類があります [SRC[>>1]]。
- [5] [[イベント]]: 特定の [CODE(DOMi)@en[[[EventTarget]]]] において [CODE(DOMi)@en[[[Event]]]]
を[[非同期]]的に [[dispatch]] します。
-- [6] なお、[[タスク]]として[[非同期]]的に実行される[[イベント]]だけでなく、
他の[[タスク]]の中で[[同期]]的に実行されるものもあります。
- [7] [[構文解析]]: [[構文解析器]]が[[バイト]]列を[[字句]]化して処理します。
- [8] [[コールバック]]: [[コールバック]]を[[非同期]]的に呼び出します。
- [9] [[資源]]の利用: [[fetch]] 操作において[[非同期]]的に [[fetch]] が行われる時、
[[資源]]が利用可能になった時にその処理を行います。
- [10] [[DOM]] 操作の反応: [[要素]]によっては [[DOM]] 操作によって引き起こされる処理があります。
[20] また、[[タスク]]はそれぞれの[[タスク源]]に属しており、
それに応じて追加される[[タスク・キュー]]が決定されます。
* 状態
[11] [[タスク]]は、次の状態を持ちます。
[FIG(list members)[
:[[イベントループ]]:[[タスク]]が属する[[イベントループ]]です。
:[[タスク源]]:[[タスク]]が属する[[タスク源]]です。
:[[文書]]:[[閲覧文脈]]の[[イベントループ]]の場合、
[[タスク]]が属する[[文書]]です。本[[文書]]が[[完全に活性]]な時に[[タスク]]は実行できます。
:[[fetch]]:[[fetch]] が生成した[[タスク]]の場合、生成元の [[fetch]] です。
[[タスク]]の削除に用いられます。
:処理:[[タスク]]が実行するべき処理の種類と必要な[[引数]]です。
:[[trusted]] [CODE(DOMe)@en[[[click]]]] フラグ群:
[[利用者]]の[[クリック]]等の処理のための[[タスク]]かどうかを表します。
[[イベントオブジェクト]]の情報の一部も保持する必要があるかもしれません。
[[trusted]] や [CODE(JS)@en[[[window.open]]]] を参照。
]FIG]
* 歴史
[REFS[
- [21] [CITE@en[Web Applications 1.0 r7874 Try to clarify event loop terminology.]] ([TIME[2013-05-31 07:22:00 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=7873&to=7874>
]REFS]
* 関連
[4] [[タスク・キュー]]は、[[タスク]]の[[順序付き]]の[[リスト]]です [SRC[>>1]]。
[[タスク]]は[[タスク・キュー]]に追加されることによって順に実行されていきます。
[18] [[Webブラウザー]]における[[非同期]]な処理は、すべてが[[タスク]]として説明されているわけではありません。
[[資源]]の [[fetch]] の後の[[非同期]]な処理などは、[[安定状態]]に処理を再開するものとされています。
[22] [[タスク]]は[[文書]]に関連付けられています。[[タスク]]がある[[要素]]に関して追加されたなら、
その[[要素]]の[[文書]]が当該[[タスク]]の[[文書]]です。また[[タスク]]がある[[閲覧文脈]]に関して追加されたなら、
その[[閲覧文脈]]の[[活性文書]]が当該[[タスク]]の[[文書]]です。
[[スクリプト]]により、あるいは[[スクリプト]]のために追加された[[タスク]]については、
その[[スクリプト]]の[[スクリプトの文書]]が[[タスク]]の[[文書]]です。 [SRC[>>1]]
[23] [[タスク]]は特定の[[イベント・ループ]]により処理されることを意図したものです。
[[タスク]]に関連付けられた[[文書]]についての[[タスク]]を処理する[[イベント・ループ]]が1つあって、
その[[文書]]の[[タスク]]はすべてその[[イベント・ループ]]で処理されます。 [SRC[>>1]]
[24] [[タスク]]とは別に[[マイクロタスク]]もあります。
かつては完全に別物として定義されていましたが、
現在では[[マイクロタスク]]が[[タスク]]として[[タスクキューに追加]]されることもあります。