2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JavaScriptのforEachで同期的にawaitが使えない問題の対処法

Last updated at Posted at 2019-02-18

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時代の寄付サイトを作った話

2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?