123456789101112131415161718192021222324252627 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', {
- value: true,
- });
- exports.promiseReduce = promiseReduce;
- var _isPromise = require('./isPromise.js');
- /**
- * Similar to Array.prototype.reduce(), however the reducing callback may return
- * a Promise, in which case reduction will continue after each promise resolves.
- *
- * If the callback does not return a Promise, then this function will also not
- * return a Promise.
- */
- function promiseReduce(values, callbackFn, initialValue) {
- let accumulator = initialValue;
- for (const value of values) {
- accumulator = (0, _isPromise.isPromise)(accumulator)
- ? accumulator.then((resolved) => callbackFn(resolved, value))
- : callbackFn(accumulator, value);
- }
- return accumulator;
- }
|