oak-domain/lib/utils/executor.js

23 lines
638 B
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.pipeline = void 0;
/**
*
* @param units 各个执行单元,需要流水线执行,可能是同步也可能是异步
*/
function pipeline(...units) {
const exec = (idx, resultPrev) => {
const unit = units[idx];
if (!unit) {
return resultPrev;
}
const result = unit(resultPrev);
if (result instanceof Promise) {
return result.then((resultSync) => exec(idx + 1, resultSync));
}
return exec(idx + 1, result);
};
return exec(0);
}
exports.pipeline = pipeline;