pig-dam-core
Version:
Library that should be included in every Pig DAM project we build
39 lines (38 loc) • 1.27 kB
JavaScript
;
/**
* Date: 3/5/2018
* Time: 9:10 PM
* @license MIT (see project's LICENSE file)
*
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.series = exports.parallel = exports.resolveNextTick = exports.rejectNextTick = void 0;
/**
* Creates a promise that resolves upon process.nextTick
*/
function rejectNextTick(...args) {
return new Promise((resolve, reject) => {
process.nextTick(reject, ...args);
});
}
exports.rejectNextTick = rejectNextTick;
/**
* Creates a promise that rejects upon process.nextTick
*/
function resolveNextTick(...args) {
return new Promise((resolve) => {
process.nextTick(resolve, ...args);
});
}
exports.resolveNextTick = resolveNextTick;
exports.parallel = Promise.all;
/**
* Creates a process chain out of an array of promise factories. Why can't they be promises? Because promises execute immediately.
* We want to defer execution until the prior promise has resolved.
* @param series - series of functions that return promises
* @param initialParameter - initial parameter into `series[0]()`
*/
function series(series, initialParameter) {
return series.reduce((current, next) => current.then(next), Promise.resolve(initialParameter));
}
exports.series = series;