Array.prototype.map()でAsyncとAwaitを使用する方法

map()と組み合わせてasync / awaitを使用するのは、少し注意が必要です。方法を見つけます。

内で非同期関数を実行したいmap()を呼び出して、配列のすべての要素に対して操作を実行し、結果を取得します。

どうすればそうできますか?

これは正しい構文です:

const list = [1, 2, 3, 4, 5] //...an array filled with values

const functionWithPromise = item => { //a function that returns a promise
  return Promise.resolve('ok')
}

const anAsyncFunction = async item => { return functionWithPromise(item) }

const getData = async () => { return Promise.all(list.map(item => anAsyncFunction(item))) }

getData().then(data => { console.log(data) })

注意すべき主なことはの使用ですPromise.all()、すべての約束が解決されると解決します。

list.map()約束のリストを返すので、result実行したすべてが解決されたときに値を取得します。

を呼び出すコードをラップする必要があることを忘れないでくださいawaitasync関数。

を参照してください記事を約束します約束の詳細については、非同期/待機ガイド

私の無料ダウンロードJavaScriptビギナーズハンドブック


その他のjsチュートリアル: