1 | function reflect<T>(promise: Promise<T>): Promise<SettledPromise<T>> {
|
2 | return promise.then(
|
3 | (v: T) => {
|
4 | return {status: 'fulfilled', value: v};
|
5 | },
|
6 | (error) => {
|
7 | return {status: 'rejected', reason: error};
|
8 | }
|
9 | );
|
10 | }
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 | export async function allSettled<T>(promises: Promise<T>[]): Promise<SettledPromise<T>[]> {
|
18 | return Promise.all(promises.map(reflect));
|
19 | }
|
20 |
|
21 | export interface SettledPromise<T> {
|
22 | status: 'fulfilled' | 'rejected';
|
23 | value?: T;
|
24 | reason?: any;
|
25 | } |
\ | No newline at end of file |