Created
November 30, 2021 19:35
-
-
Save jazznerd206/1e598c595ab734f82f0ee0e508730727 to your computer and use it in GitHub Desktop.
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
/** | |
* resolving promise | |
*/ | |
let p = new Promise((resolve, reject) => resolve('resolved')) | |
/** | |
* rejecting promise | |
* | |
* comment out when not using to prevent errors | |
*/ | |
let pFail = new Promise((resolve, reject) => reject('rejected')) | |
/** | |
* random rejection promise | |
*/ | |
let randomP1 = new Promise((resolve, reject) => { | |
let r = Math.random() | |
if (r > .25 && r < .75) { | |
reject('rejection: Math.random() was between .25 and .75'); | |
} else { | |
setTimeout(resolve('resolved'), 1000) | |
} | |
}) | |
let randomP2 = new Promise((resolve, reject) => { | |
let r = Math.random() | |
if (r > .25 && r < .75) { | |
reject('rejection: Math.random() was between .25 and .75'); | |
} else { | |
setTimeout(resolve('resolved'), 1000) | |
} | |
}) | |
let randomP3 = new Promise((resolve, reject) => { | |
let r = Math.random() | |
if (r > .25 && r < .75) { | |
reject('rejection: Math.random() was between .25 and .75'); | |
} else { | |
setTimeout(resolve('resolved'), 1000) | |
} | |
}) | |
// arrays to pass to Promise.all() | |
let promises = [ p, p, p ]; | |
let promisesWithFail = [ pFail, p, p, p ]; | |
let promiseswithRandom = [ pFail, randomP1, randomP2, randomP3 ]; | |
/** | |
* all promises in series | |
*/ | |
const allInSeries = async () => { | |
Promise.all(promises) | |
.then(results => { | |
for (let i = 0; i < results.length; ++i) { | |
console.log(`results[i], promise.all => `, results[i]); | |
} | |
}).catch(err => console.error(err)) | |
} | |
// allInSeries(); | |
/** | |
* all promises regardless of error | |
*/ | |
let allPromises = async () => { | |
let results = []; | |
let _p = null; | |
for (let i = 0; i < promisesWithFail.length; ++i) { | |
try { | |
_p = await promisesWithFail[i]; | |
results.push(_p) | |
} catch(err) { | |
results.push(err); | |
} | |
} | |
console.log('all with potential fail => ', results); | |
} | |
// allPromises(); | |
/** | |
* first promise fulfilled | |
*/ | |
const firstWithPotentialFail = async() => { | |
let results = []; | |
let _p = null; | |
for (let i = 0; i < promisesWithRandom.length; ++i) { | |
try { | |
if (results.length > 0) { | |
continue; | |
} else { | |
_p = await promisesWithRandom[i]; | |
results.push(_p) | |
} | |
} catch(err) { | |
console.error('rejection => ', err) | |
} | |
} | |
console.log('first resolved promise => ', results); | |
} | |
// firstWithPotentialFail() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment