JavaScriptのforEachでawaitが使えない問題とは、次のような問題です。
const arr = [1, 2, 3];
arr.forEach(async (el)=>{
await someFunction(el)
})
これは、someFunctionを同期的に3回呼び出そうとして書いたコードです。
しかし実際に実行すると分かるのですが、
someFunction(1)
someFunction(2)
someFunction(3)
はそれぞれの完了を待たずに一斉に呼び出されています。
これはforEachメソッドの性質ですので、どうすることもできません。
JavaScriptのforEachで同期的にawaitが使えない問題の対処法
for of
文を使い、全体をasync関数でラッピングすることでこの問題は解決できます。
const arr = [1, 2, 3];
(async(){
for(let el of arr){
await someFunction(el)
}
})()
終わりに
私は現在、Web3のサービスの開発をしています。詳しくはこちらの記事をご覧下さい。
無料でイーサリアムが当たる、Web3時代の寄付サイトを作った話