回答編集履歴
2
読みやすくなったかな……?
answer
CHANGED
@@ -9,29 +9,112 @@
|
|
9
9
|
|
10
10
|
①について、
|
11
11
|
|
12
|
-
forEachの1周目は、async()=>{...}【1】をマイクロタスクに積みます。
|
12
|
+
forEachの1周目は、async()=>{...}【1】をマイクロタスクに積みます。
|
13
|
+
|
14
|
+
```microTask
|
15
|
+
async()=>{...}【1】
|
16
|
+
```
|
17
|
+
|
13
|
-
forEachの2周目は、async()=>{...}【2】をマイクロタスクに積みます。
|
18
|
+
forEachの2周目は、async()=>{...}【2】をマイクロタスクに積みます。
|
19
|
+
|
20
|
+
```microTask
|
21
|
+
async()=>{...}【1】
|
22
|
+
async()=>{...}【2】
|
23
|
+
```
|
24
|
+
|
14
25
|
...
|
15
|
-
forEachの5周目は、async()=>{...}【5】をマイクロタスクに積みます。マイクロタスクには、async()=>{...}【1】、...async()=>{...}【5】があります。
|
16
26
|
|
27
|
+
forEachの5周目は、async()=>{...}【5】をマイクロタスクに積みます。
|
28
|
+
|
29
|
+
```microTask
|
30
|
+
async()=>{...}【1】
|
31
|
+
...
|
32
|
+
async()=>{...}【5】
|
33
|
+
```
|
34
|
+
|
35
|
+
|
17
36
|
イベントループが周り、マイクロタスクの処理をします。
|
18
37
|
|
19
|
-
async()=>{...}【1】の処理をします。awaitがあるので、myPromise()【1】をマイクロタスクに積み、停止します。
|
38
|
+
async()=>{...}【1】の処理をします。awaitがあるので、myPromise()【1】をマイクロタスクに積み、停止します。
|
39
|
+
|
40
|
+
```microTask
|
20
|
-
async()=>{...}【2】
|
41
|
+
async()=>{...}【2】
|
21
42
|
...
|
22
|
-
async()=>{...}【5】
|
43
|
+
async()=>{...}【5】
|
44
|
+
myPromise()【1】
|
45
|
+
```
|
23
46
|
|
24
|
-
|
47
|
+
async()=>{...}【2】の処理をします。awaitがあるので、myPromise()【2】をマイクロタスクに積み、停止します。
|
48
|
+
|
49
|
+
```microTask
|
50
|
+
async()=>{...}【3】
|
25
51
|
...
|
26
|
-
|
52
|
+
async()=>{...}【5】
|
53
|
+
myPromise()【1】
|
54
|
+
myPromise()【2】
|
55
|
+
```
|
27
56
|
|
28
|
-
解決された.then(...)【1】の処理をします。コンソールに解決された値`foo`を出力し、Promise【1】をマイクロタスクに積みます。マイクロタスクには、.then(...)【2】、....then(...)【5】、Promise【1】があります。
|
29
57
|
...
|
30
|
-
解決された.then(...)【5】の処理をします。コンソールに解決された値`foo`を出力し、Promise【5】をマイクロタスクに積みます。マイクロタスクには、Promise【1】...Promise【5】があります。
|
31
58
|
|
32
|
-
|
59
|
+
async()=>{...}【5】の処理をします。awaitがあるので、myPromise()【5】をマイクロタスクに積み、停止します。
|
60
|
+
|
61
|
+
```microTask
|
62
|
+
myPromise()【1】
|
33
63
|
...
|
64
|
+
myPromise()【5】
|
65
|
+
```
|
34
66
|
|
67
|
+
|
68
|
+
解決されたmyPromise()【1】の処理をします。.then(...)【1】をマイクロタスクに積みます。
|
69
|
+
|
70
|
+
```microTask
|
71
|
+
myPromise()【2】
|
72
|
+
...
|
73
|
+
myPromise()【5】
|
74
|
+
.then(...)【1】
|
75
|
+
```
|
76
|
+
|
77
|
+
...
|
78
|
+
|
79
|
+
解決されたmyPromise()【5】の処理をします。.then(...)【5】をマイクロタスクに積みます。
|
80
|
+
|
81
|
+
```microTask
|
82
|
+
.then(...)【1】
|
83
|
+
...
|
84
|
+
.then(...)【5】
|
85
|
+
```
|
86
|
+
|
87
|
+
|
88
|
+
解決された.then(...)【1】の処理をします。コンソールに解決された値`foo`を出力し、Promise【1】をマイクロタスクに積みます。
|
89
|
+
|
90
|
+
```microTask
|
91
|
+
.then(...)【2】
|
92
|
+
...
|
93
|
+
.then(...)【5】
|
94
|
+
Promise【1】
|
95
|
+
```
|
96
|
+
|
97
|
+
...
|
98
|
+
|
99
|
+
解決された.then(...)【5】の処理をします。コンソールに解決された値`foo`を出力し、Promise【5】をマイクロタスクに積みます。
|
100
|
+
|
101
|
+
```microTask
|
102
|
+
Promise【1】
|
103
|
+
...
|
104
|
+
Promise【5】
|
105
|
+
```
|
106
|
+
|
107
|
+
|
108
|
+
Promise【1】が解決されたので、停止していたasync()=>{...}【1】の処理を再開します。コンソールに`element`を出力し、undefinedで解決して終わります。
|
109
|
+
|
110
|
+
```microTask
|
111
|
+
Promise【2】
|
112
|
+
...
|
113
|
+
Promise【5】
|
114
|
+
```
|
115
|
+
|
116
|
+
...
|
117
|
+
|
35
118
|
という感じです。
|
36
119
|
|
37
120
|
繰り返しになりますが、かなり大雑把に説明していますので、細かい間違いが含まれています。
|
1
書式の変更
answer
CHANGED
@@ -20,12 +20,15 @@
|
|
20
20
|
async()=>{...}【2】の処理をします。awaitがあるので、myPromise()【2】をマイクロタスクに積み、停止します。マイクロタスクには、async()=>{...}【3】、...async()=>{...}【5】、myPromise()【1】、myPromise()【2】があります。
|
21
21
|
...
|
22
22
|
async()=>{...}【5】の処理をします。awaitがあるので、myPromise()【5】をマイクロタスクに積み、停止します。マイクロタスクには、myPromise()【1】、...myPromise()【5】があります。
|
23
|
+
|
23
24
|
解決されたmyPromise()【1】の処理をします。.then(...)【1】をマイクロタスクに積みます。マイクロタスクには、myPromise()【2】、...myPromise()【5】、.then(...)【1】があります。
|
24
25
|
...
|
25
26
|
解決されたmyPromise()【5】の処理をします。.then(...)【5】をマイクロタスクに積みます。マイクロタスクには、.then(...)【1】、....then(...)【5】があります。
|
27
|
+
|
26
28
|
解決された.then(...)【1】の処理をします。コンソールに解決された値`foo`を出力し、Promise【1】をマイクロタスクに積みます。マイクロタスクには、.then(...)【2】、....then(...)【5】、Promise【1】があります。
|
27
29
|
...
|
28
30
|
解決された.then(...)【5】の処理をします。コンソールに解決された値`foo`を出力し、Promise【5】をマイクロタスクに積みます。マイクロタスクには、Promise【1】...Promise【5】があります。
|
31
|
+
|
29
32
|
Promise【1】が解決されたので、停止していたasync()=>{...}【1】の処理を再開します。コンソールに`element`を出力し、undefinedで解決して終わります。マイクロタスクには、Promise【2】...Promise【5】があります。
|
30
33
|
...
|
31
34
|
|