promisu
Version:
functional promise with map filter reduce scan all race every some few try waitfor finally queue debounce throttle
24 lines (18 loc) • 472 B
JavaScript
const PromisuReduce = (iterable, reduceFn, initValue) => new Promise((resolve, reject) => {
const iterator = iterable[Symbol.iterator]()
let index = 0
const next = total => {
const el = iterator.next()
if (el.done) {
resolve(total)
return
}
Promise.all([total, el.value])
.then(value => {
next(reduceFn(value[0], value[1], index++))
})
.catch(reject)
}
next(initValue)
})
module.exports = PromisuReduce