Skip to content

Instantly share code, notes, and snippets.

@cherihung
Created February 20, 2022 00:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cherihung/f6042c362ace4bc92a46352c5b5af24a to your computer and use it in GitHub Desktop.
Save cherihung/f6042c362ace4bc92a46352c5b5af24a to your computer and use it in GitHub Desktop.
allSettled implementations
async function success() {
return new Promise((res, rej) => res('Resolved'));
}
async function error() {
return new Promise((res, rej) => rej('Rejected'));
}
// then, catch syntax
function allSettled(promises) {
const allPromises = promises.map((p) => {
return Promise.resolve(p).then(
(value) => ({
status:'fulfilled', value
}),
(err) => ({
status:'failed', reason: err
})
)
})
return Promise.all(allPromises);
}
// async/await syntax
// async function allSettled(promises) {
// const allPromises = promises.map(async (p) => {
// try {
// const value = await p;
// return {status: 'fulfilled', value}
// } catch(err) {
// return {status: 'failed', reason: err}
// }
// })
// return Promise.all(allPromises);
// }
(async() => {
try {
const result = await allSettled([success(), error()]);
let filtered = [];
result.forEach((r) =>
{
if( r.status === 'fulfilled') {
filtered.push(r.value)
}
})
console.log('result', result)
console.log('success', filtered)
} catch(err) {
console.error('error', err)
}
})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment