Promiseの直列化
forEach()やmap()は同期関数である。
そのため引数のコールバック関数がPromiseを返す関数だと、
code: JavaScript
someArray.forEach(async el => {
await returnPromiseFunc(el);
});
コールバック関数自体は同期処理になるが、someArray.forEach()自体は非同期となるため、この処理が終わる前に次の処理に進んでしまう。
Promise.all()か、for, for-ofのどちらかを使う
Promise.all()なら並行処理になり処理速度が上がる。
処理の順番が重要なときや、非同期処理の値を次の非同期処理で使いたい時はforまたはfor-ofを使う。
for-ofを使ったPromiseの直列処理
code: JavaScript
let result = [];
for (const someData of someArray) {
result.push(await returnPromiseFunc(someData));
}
return result;