1
0
Fork 0
mirror of https://github.com/actions/setup-python.git synced 2024-11-23 00:49:39 +00:00
setup-python/node_modules/p-reduce/index.js

23 lines
413 B
JavaScript
Raw Normal View History

2019-06-27 01:12:00 +00:00
'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);
});