ここでの問題はawait、Promise ではなく Promise の配列を試みていることです。これはあなたが期待することをしません。
に渡されたオブジェクトがawaitPromise ではない場合await、値を解決しようとする代わりに、そのままの値をすぐに返します。awaitしたがって、Promise の代わりに (Promise オブジェクトの) 配列をここで渡したので、await によって返される値は単にその配列であり、型はPromise<number>[]です。
おそらくやりたいことは、それをing する前に単一の Promise に変換するために、Promise.all返された配列を呼び出すことです。mapawait
のMDNドキュメントにPromise.allよると:
このPromise.all(iterable)メソッドは、 iterable 引数のすべての promise が解決されたときに解決される 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;
}));
これにより、ここで発生している特定のエラーが解決されます。
まさに何をしようとしているのかによって、の代わりにPromise.allSettled, Promise.any, またはを使用することを検討することもできますが、ほとんどの状況 (ほぼ確実にこれを含む)で必要なものになります。Promise.racePromise.allPromise.all