Skip to content

Instantly share code, notes, and snippets.

@arafathusayn
Last active December 26, 2018 16:25
Show Gist options
  • Save arafathusayn/5b52749f660ab7ae8f8d70c07210f1ec to your computer and use it in GitHub Desktop.
Save arafathusayn/5b52749f660ab7ae8f8d70c07210f1ec to your computer and use it in GitHub Desktop.
let promises = []
promises[0] = new Promise((resolve, reject) => {
setTimeout(() => {
console.log("first promise")
reject("first promise")
}, 1000)
})
promises[1] = new Promise((resolve, reject) => {
setTimeout(() => {
console.log("second promise")
resolve("second promise")
}, 2000)
})
promises[2] = new Promise((resolve, reject) => {
setTimeout(() => {
console.log("third promise")
resolve("third promise")
}, 3000)
})
function safeRace(promises, errorHandler = (_ => _)) {
return new Promise((resolve, _) => {
for (const promise of promises) {
promise
.then(value => {
resolve(value)
})
.catch(errorHandler)
}
})
}
safeRace(promises).then(value => {
console.log('winner: ' + value)
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment