ホームページ >ウェブフロントエンド >jsチュートリアル >Array.map で Async/Await を使用するときに「タイプ 'Promise[]' をタイプ 'number[]' に割り当てることができません」を解決する方法
Array.map での Async/Await の使用
Array.map で async/await を使用しようとすると、ユーザーは頻繁に次のようなエラーに遭遇します
"Type 'Promise
このエラーは、await 関数が Promise を解決する必要があるために発生します。ただし、Array.map は通常、単一の Promise ではなく Promise の配列を返します。
Solution
この問題に対処するには、Array によって返される Promise の配列を変換します。 Promise.all を使用して単一の Promise にマップします。 Promise.all は、反復可能な引数内のすべての Promise が解決された場合にのみ解決されます。
問題のあるコードの修正版は次のとおりです:
const arr = [1, 2, 3, 4, 5]; const results: number[] = await Promise.all(arr.map(async (item): Promise<number> => { await callAsynchronousOperation(item); return item + 1; }));
Promise.all を利用することで、Promise の配列は単一の Promise として解決され、await が正しく機能できるようになり、「Type 'Promise
追加オプション
特定のユースケースに応じて、Promise.allSettled、Promise.any、または Promise の使用を検討してください。 Promise.all の代わりに .race。ただし、上記のような状況では通常、Promise.all が最も適切な選択です。
以上がArray.map で Async/Await を使用するときに「タイプ 'Promise[]' をタイプ 'number[]' に割り当てることができません」を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。