setup-python/node_modules/p-reduce/index.js

23 lines
413 B
JavaScript

'use strict';
module.exports = (iterable, reducer, initVal) => new Promise((resolve, reject) => {
const iterator = iterable[Symbol.iterator]();
let i = 0;
const next = total => {
const el = iterator.next();
if (el.done) {
resolve(total);
return;
}
Promise.all([total, el.value])
.then(value => {
next(reducer(value[0], value[1], i++));
})
.catch(reject);
};
next(initVal);
});