回答編集履歴
2
書式の改善
answer
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
}
|
16
16
|
})())
|
17
17
|
```
|
18
|
-
なので、`.then(Promise.all([4,5,6]))`のように書くと、
|
18
|
+
なので、`.then(Promise.all([4,5,6]))`のように書くと、`Primise.all()`は即座に評価され、Primise.allの引数が即座に評価され、配列の関数が実行されるので、全ての関数がほぼ同時に解決を始めます。
|
19
19
|
|
20
20
|
二つ目のコードで言うと、
|
21
21
|
```js
|
@@ -23,4 +23,4 @@
|
|
23
23
|
return Promise.all(arr)
|
24
24
|
}
|
25
25
|
```
|
26
|
-
とありますから、`promisewrapper`が呼ばれる=戻り値が評価される=
|
26
|
+
とありますから、`promisewrapper`が呼ばれる=戻り値が評価される=`Promise.all(arr)`が評価されます。ですから、`array = array.map((x, i) => promisewrapper(x, i))`の時点で解決が始まってしまいます。戻り値を評価して欲しくないなら関数でラップして返すしかないでしょう。
|
1
追記
answer
CHANGED
@@ -15,4 +15,12 @@
|
|
15
15
|
}
|
16
16
|
})())
|
17
17
|
```
|
18
|
-
なので、`.then(Promise.all([4,5,6]))`のように書くと、'Primise.all()'は即座に評価され、Primise.allの引数が即座に評価され、配列の関数が実行されるので、全ての関数がほぼ同時に解決を始めます。
|
18
|
+
なので、`.then(Promise.all([4,5,6]))`のように書くと、'Primise.all()'は即座に評価され、Primise.allの引数が即座に評価され、配列の関数が実行されるので、全ての関数がほぼ同時に解決を始めます。
|
19
|
+
|
20
|
+
二つ目のコードで言うと、
|
21
|
+
```js
|
22
|
+
function promisewrapper(arr){
|
23
|
+
return Promise.all(arr)
|
24
|
+
}
|
25
|
+
```
|
26
|
+
とありますから、`promisewrapper`が呼ばれる=戻り値が評価される='Promise.all(arr)'が評価されます。ですから、`array = array.map((x, i) => promisewrapper(x, i))`の時点で解決が始まってしまいます。戻り値を評価して欲しくないなら関数でラップして返すしかないでしょう。
|