Created
October 30, 2017 19:41
-
-
Save SastraNababan/b19de67d98dab46155d7a9bce750f93a to your computer and use it in GitHub Desktop.
Promise Race Example 3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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