非同期待機を Array.map で操作する
Array.map は、配列内の各要素を変換するための強力な方法です。ただし、これを非同期操作で使用すると問題が発生する可能性があります。
提供されたコード スニペットでは、map の出力が Promise ではなく Promise の配列であるため、エラーが発生します。 await は Promise を期待し、解決された値を返しますが、配列の場合は配列自体を返します。
この問題を解決するには、Promise.all を使用して Promise の配列を 1 つの Promise に変換できます。 Promise.all は、単一の外側の Promise を解決する前に、配列内のすべての Promise が解決されるのを待ちます。
修正されたコード:
var arr = [1,2,3,4,5]; var results: number[] = await Promise.all(arr.map(async (item): Promise<number> => { await callAsynchronousOperation(item); return item + 1; }));
この変更により、Array.map の出力が確実に変換されます。単一の Promise にまとめられ、await が結合された結果を数値の配列として正しく解決できるようになります。
以上が「async/await」と「Array.map」を併用して非同期操作を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。