@ima/core
Version:
IMA.js framework for isomorphic javascript application
15 lines (14 loc) • 588 B
JavaScript
import { AbstractExecution } from './AbstractExecution';
export class SerialBatch extends AbstractExecution {
/**
* @inheritDoc
*/ execute(...args) {
const zeroStage = Promise.resolve([]);
return this._jobs.reduce((lastStage, currentStage)=>lastStage.then((results)=>this._executeJob(currentStage, args).then(Array.prototype.concat.bind(results))), zeroStage);
}
_executeJob(stage, args) {
const result = stage(...args);
return result instanceof Promise ? result : Promise.resolve(result);
}
}
//# sourceMappingURL=SerialBatch.js.map