1 | // Based on <https://github.com/es-shims/Promise.allSettled/blob/master/implementation.js>
|
2 | export function allSettled(values) {
|
3 | return Promise.all(values.map(item => {
|
4 | const onFulfill = (value) => {
|
5 | return { status: 'fulfilled', value };
|
6 | };
|
7 | const onReject = (reason) => {
|
8 | return { status: 'rejected', reason };
|
9 | };
|
10 | const itemPromise = Promise.resolve(item);
|
11 | try {
|
12 | return itemPromise.then(onFulfill, onReject);
|
13 | }
|
14 | catch (error) {
|
15 | return Promise.reject(error);
|
16 | }
|
17 | }));
|
18 | }
|