12345678910111213141516171819202122232425262728 |
- 'use strict';
- const pReduce = (iterable, reducer, initialValue) => new Promise((resolve, reject) => {
- const iterator = iterable[Symbol.iterator]();
- let index = 0;
- const next = async total => {
- const element = iterator.next();
- if (element.done) {
- resolve(total);
- return;
- }
- try {
- const value = await Promise.all([total, element.value]);
- next(reducer(value[0], value[1], index++));
- } catch (error) {
- reject(error);
- }
- };
- next(initialValue);
- });
- module.exports = pReduce;
- // TODO: Remove this for the next major release
- module.exports.default = pReduce;
|