Chained promises test
by PhilQ
JavaScript
const logAndReturn = (m) => {
console.log(m)
return m
}
const getPromise = (t) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(`Finished A${t}`)
resolve(`A${t}`)
}, t)
})
.catch(e => Promise.reject(logAndReturn(`Error A: ${e}`)))
.then(r => new Promise((resolve, reject) => {
setTimeout(() => {
console.log(`Finished B${t} [${r}]`)
reject(`B${t}`)
}, t)
})
.catch(e => Promise.reject(logAndReturn(`Error B: ${e}`)))
)
.then(r => new Promise((resolve, reject) => {
setTimeout(() => {
console.log(`Finished C${t} [${r}]`)
reject(`C${t}`)
}, t)
})
.catch(e => Promise.reject(logAndReturn(`Error C: ${e}`)))
)
.catch(e => logAndReturn(`Error *: ${e}`))
}
const promises = [1000, 2000];
Promise.allSettled(
promises.map(t => getPromise(t))
)
.then(results => {
console.log(JSON.stringify(
results.map(r => r.status === "fulfilled" ?
`Success: ${r.value}` :
`Error: ${r.reason}`
)
))
})