executor功能

This commit is contained in:
Xu Chang 2024-05-16 15:40:42 +08:00
parent 87a952aec8
commit 8f3933a4ba
3 changed files with 42 additions and 0 deletions

5
lib/utils/executor.d.ts vendored Normal file
View File

@ -0,0 +1,5 @@
/**
*
* @param units 线
*/
export declare function pipeline(...units: Array<(result?: any) => any>): any;

19
lib/utils/executor.js Normal file
View File

@ -0,0 +1,19 @@
"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];
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;

18
src/utils/executor.ts Normal file
View File

@ -0,0 +1,18 @@
/**
*
* @param units 线
*/
export function pipeline(...units: Array<(result?: any) => any>) {
const exec = (idx: number, resultPrev?: any):any => {
const unit = units[idx];
const result = unit(resultPrev);
if (result instanceof Promise) {
return result.then(
(resultSync) => exec(idx + 1, resultSync)
);
}
return exec(idx + 1, result);
};
return exec(0);
}