/
139.txt
68 lines (54 loc) · 2.71 KB
/
139.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
[1] [DFN[すべて終わったら実行]]する[[オブジェクト]]は、 [CODE[Promise.all]]
のような動作の[[アルゴリズム]]の説明で使うものです。
[2] [[仕様書]]では、「すべて○○まで待つ」のように[[英語]]で説明されています。
[3]
[CODE[Promise.all]] とは、[[コールバック]]の実行タイミングが異なります。
[11]
[VAR[オブジェクト]]は、次の状態を持ちます。
[FIG(list members)[
: [F[処理状態群]] : 初期値は[[空集合]]。
: [F[完了時処理]] : 初期値は [CODE[null]]。
: [F[中断済み]] : 初期値は[[偽]]。
]FIG]
[19]
処理状態は、次の状態を持ちます。
[FIG(list members)[
: [F[中断]] : 初期値は [CODE[null]]。
: [F[全体]] :
]FIG]
[4] [VAR[オブジェクト]]について[VAR[処理]]と[VAR[中断]]を実行するには、
次のようにします。
[FIG(steps)[
= [5] [VAR[処理状態]]を、新しい処理状態に設定します。
[FIG(list members)[ [21] 処理状態
: [F[中断]] : [VAR[中断]]
: [F[全体]] : [VAR[オブジェクト]]
]FIG]
= [20] [VAR[オブジェクト]]の[F[処理状態群]]に、[VAR[処理状態]]を追加します。
= [6] [VAR[処理状態]]について[VAR[処理]]を実行します。
[[例外]]が[[投げ]]られれば、[[再び投げ]]ます。
]FIG]
[7]
[VAR[処理状態]]の完了は、次のようにします。
[FIG(steps)[
= [18] [VAR[オブジェクト]]を、[VAR[処理状態]]の[F[全体]]に設定します。
= [8] [VAR[オブジェクト]]の[F[処理状態群]]から、[VAR[処理状態]]を削除します。
= [9] [VAR[オブジェクト]]の[F[完了時処理]]が [CODE[null]] でない場合、
== [10] [VAR[オブジェクト]]の[F[処理状態群]]が[[空][空集合]]の場合、
=== [17] [VAR[オブジェクト]]の[F[完了時処理]]を実行します。
]FIG]
[22] [VAR[オブジェクト]]について中断するには、次のようにします。
[FIG(steps)[
= [26] [VAR[オブジェクト]]の[F[中断済み]]を、[[真]]に設定します。
= [23] [VAR[オブジェクト]]の[F[処理状態群]]の各[VAR[処理状態]]について、
== [24] [VAR[処理状態]]の[F[中断]]を実行します。
== [25] [VAR[処理状態]]を完了します。
]FIG]
[12] [VAR[オブジェクト]]について[VAR[処理]]を完了時に実行するとは、
次のようにします。
[FIG(steps)[
= [13] [VAR[オブジェクト]]の[F[処理状態群]]が[[空][空集合]]の場合、
== [14] [VAR[処理]]を実行します。
= [15] それ以外の場合、
== [16] [VAR[オブジェクト]]の[F[完了時処理]]を、[VAR[処理]]に設定します。
]FIG]