Skip to content

Instantly share code, notes, and snippets.

@jazznerd206
Created November 30, 2021 19:35
Show Gist options
  • Save jazznerd206/1e598c595ab734f82f0ee0e508730727 to your computer and use it in GitHub Desktop.
Save jazznerd206/1e598c595ab734f82f0ee0e508730727 to your computer and use it in GitHub Desktop.
/**
* 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