以下のように書くと
javascript
1(async () => { 2 const add = await [1, 2, 3].reduce(async (acc, v) => { 3 await acc; 4 return acc + v; 5 }, 0); 6 7 console.log(add); 8})();
実行結果が以下のようになってしまうのですが
[object Promise]3
以下のように書き直すと
javascript
1(async () => { 2 const add = await [1, 2, 3].reduce(async (acc, v) => { 3 await acc; 4 return (await acc) + v;//この部分にawaitを追加 5 }, 0); 6 7 console.log(add); 8})();
実行結果が(意図した通り)以下のようになります。
6
ここで質問なのですが
前者の場合、
javascript
1 await acc; 2 return acc + v;
と1行目でawait acc
と書いているのだから、reuturn acc+v
のacc
には、await
された後のacc
がreturnされると思うのですが、なぜこのような挙動になるのでしょうか?
なぜ後者のように書かないといけないのか分かりません。
よろしければどなたか回答よろしくおねがいいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/01 06:13