[解決済み] JavaScriptの配列.reduceとasync/await
2022-10-04 13:02:16
質問
.reduce()にasync/awaitを組み込むと、以下のような問題があるようです。
const data = await bodies.reduce(async(accum, current, index) => {
const methodName = methods[index]
const method = this[methodName]
if (methodName == 'foo') {
current.cover = await this.store(current.cover, id)
console.log(current)
return {
...accum,
...current
}
}
return {
...accum,
...method(current.data)
}
}, {})
console.log(data)
は
data
オブジェクトは、ログに記録される
前に
は
this.store
が完了する前に...
を利用できることは知っています。
Promise.all
を非同期ループで利用できることは知っていますが、それは
.reduce()
?
どのように解決するのですか?
問題は、アキュムレータの値が約束事であることです。
async function
s. 順次評価(と、最後の反復以外は全く待たされない)を得るには、以下のようにする必要があります。
const data = await array.reduce(async (accumP, current, index) => {
const accum = await accumP;
…
}, Promise.resolve(…));
とはいえ
async
/
await
私は一般的に
配列の反復処理ではなく、単純なループを使うことをお勧めします。
その方がパフォーマンスも良く、シンプルであることが多いからです。
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] forEachループでasync/awaitを使用する
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] WebStormで未解決の変数が大量にある場合の警告に対処する方法は?
-
[解決済み] JSXとLoadshを使用して、ある要素をn回繰り返す方法
-
[解決済み] JavaScriptでの大文字小文字を区別しない正規表現
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] forEachループでasync/awaitを使用する
-
[解決済み】await Promise.all()と複数awaitの違いって何?
-
[解決済み] JavaScript で範囲を作成する - 奇妙な構文
-
[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?
-
[解決済み] WebStormで未解決の変数が大量にある場合の警告に対処する方法は?
-
[解決済み] node.jsで文字列のsha1ハッシュを取得するにはどうすればよいですか?
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] JavaScriptのArray.sort()メソッドでシャッフルするのは正しいのか?
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?
-
[解決済み] JavaScriptデータフォーマット/プリティプリンタ