Home >Web Front-end >JS Tutorial >Why Does `await arr.map()` Fail, and How Can `Promise.all` Fix It?
In the code snippet:
var arr = [1,2,3,4,5]; var results: number[] = await arr.map(async (item): Promise<number> => { await callAsynchronousOperation(item); return item + 1; });
you receive the error "TS2322: Type 'Promise
The Issue
The problem arises because you are attempting to await an array of promises (Promise
The Solution
To rectify this error, you can utilize Promise.all to transform the Promise
By using Promise.all, you convert your array of promises into a single Promise, enabling you to await the resolution of all promises simultaneously.
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; }));
Alternatively, consider employing Promise.allSettled, Promise.any, or Promise.race depending on your specific use case. However, for the scenario you've provided, Promise.all remains the most appropriate choice.
The above is the detailed content of Why Does `await arr.map()` Fail, and How Can `Promise.all` Fix It?. For more information, please follow other related articles on the PHP Chinese website!