generated at
Promiseの直列化
forEach()やmap()は同期関数である。
そのため引数のコールバック関数がPromiseを返す関数だと、
JavaScript
someArray.forEach(async el => { await returnPromiseFunc(el); });
コールバック関数自体は同期処理になるが、 someArray.forEach() 自体は非同期となるため、この処理が終わる前に次の処理に進んでしまう。

Promise.all()か、for, for-ofのどちらかを使う
Promise.all() なら並行処理になり処理速度が上がる。
処理の順番が重要なときや、非同期処理の値を次の非同期処理で使いたい時は for または for-of を使う。

for-ofを使ったPromiseの直列処理
JavaScript
let result = []; for (const someData of someArray) { result.push(await returnPromiseFunc(someData)); } return result;