npm package: @emmveqz/js-utils
npm install @emmveqz/js-utils
Returns an iterator, yielding the value of 'fulfilled'
promises first.
In case a promise is rejected, the iterator will yield an Error
instance instead.
const promises: Promise<string>[] = [
new Promise((resolve) => {
setTimeout(() => {
resolve('this will yield second')
}, 3500)
}),
new Promise((resolve) => {
setTimeout(() => {
resolve('end')
}, 7500)
}),
new Promise((_, reject) => {
setTimeout(() => {
reject('this will yield an error')
}, 5500)
}),
new Promise((resolve) => {
setTimeout(() => {
resolve('this will yield first')
}, 1500)
}),
]
const someAsyncFunc = async () => {
const itor = racePromisesIterator(promises)
let result = await itor.next()
while (!result.done) {
console.log(result.value instanceof Error
? result.value.message
: result.value)
result = await itor.next()
}
}