Skip to content

Instantly share code, notes, and snippets.

@SastraNababan
Created October 30, 2017 19:41
Show Gist options
  • Save SastraNababan/b19de67d98dab46155d7a9bce750f93a to your computer and use it in GitHub Desktop.
Save SastraNababan/b19de67d98dab46155d7a9bce750f93a to your computer and use it in GitHub Desktop.
Promise Race Example 3
Promise.seriousRace = function(promises) {
let indexPromises = promises.map((p, index) => p.catch(() => {throw index}))
return Promise.race(indexPromises).catch(index => {
let p = promises.splice(index, 1)[0]
p.catch(e => console.log( e + ' terjatuh,ahh sudahlah lanjutkan saja'))
return Promise.seriousRace(promises)
})
}
let peserta1 = new Promise(resolve => setTimeout(resolve, 30, 'Peserta 1'))
let peserta2 = new Promise((resolve,reject) => setTimeout(reject, 20, 'Peserta 2'))
let peserta3 = new Promise(resolve => setTimeout(resolve, 50, 'Peserta 3'))
let peserta4 = new Promise(resolve => setTimeout(resolve, 100, 'Peserta 4'))
let peserta5 = new Promise(resolve => setTimeout(resolve, 90, 'Peserta 5'))
Promise.seriousRace([peserta1, peserta2, peserta3, peserta4, peserta5])
.then(val => console.log('Balapan selesai,Pemenangnya adalah:', val))
.catch(err => console.log('Balapan dihentikan karena : ', err))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment