taozen
Version:
一个轻量级的任务管理库
138 lines (137 loc) • 3.79 kB
TypeScript
import { Tao } from "./Tao";
import { ZenExecutor, ZenRetryConfig, ZenStatus } from "./type";
export declare class Zen<TInput = any, TOutput = any> {
private readonly name;
private task;
private status;
private value?;
private error?;
private startTime?;
private endTime?;
private dependencies;
private cleanupFunctions;
private executor;
private config;
readonly id: string;
/**
* 创建一个新的执行步骤
* @param id - 步骤唯一标识
* @param name - 步骤名称
* @param executor - 步骤执行器函数
* @param task - 所属的 Task 实例
* @param config - 步骤配置
*/
constructor(name: string, // 步骤名称
task: Tao);
get result(): TOutput | undefined;
/**
* 设置当前步骤依赖的其他步骤
* @param zens - 依赖的步骤数组
* @returns this - 返回当前实例以支持链式调用
*/
after(...zens: Zen[]): this;
/**
* 设置取消回调函数
* @param callback - 取消回调函数
* @returns this - 返回当前实例以支持链式调用
*/
cancel(callback: () => void): this;
exe(executor: ZenExecutor<TInput, TOutput>): this;
/**
* 添加清理函数
* @param cleanup - 清理函数
*/
private addCleanup;
/**
* 执行清理函数
*/
private executeCleanup;
/**
* 包装依赖结果为ZenInput
* @param depResults - 依赖步骤的执行结果
* @returns ZenInput - 包装后的输入对象
*/
private wrapDependencyResults;
/**
* 内部执行方法
* @param signal - 中断信号
* @returns Promise<TOutput> - 执行结果
* @private
*/
_execute(signal: AbortSignal): Promise<TOutput>;
/**
* 核心执行逻辑
* @param zenInput - 输入参数,包含依赖结果
* @param signal - 中断信号
* @returns Promise<TOutput> - 执行结果
* @private
*/
private executeCore;
/**
* 重试执行逻辑
* @param zenInput - 输入参数
* @param signal - 中断信号
* @param config - 重试配置
* @returns Promise<TOutput> - 执行结果
*/
private executeWithRetry;
/**
* 超时执行逻辑
* @param zenInput - 输入参数
* @param signal - 中断信号
* @returns Promise<TOutput> - 执行结果
*/
private executeWithTimeout;
/**
* 等待依赖步骤完成
* @returns Promise<Record<string, any>> - 依赖步骤的执行结果
*/
private waitForDependencies;
getId: () => string;
getName: () => string;
getStatus: () => ZenStatus;
getResult: () => TOutput | undefined;
getError: () => Error | undefined;
getDependencies: () => string[];
getStartTime: () => number | undefined;
getEndTime: () => number | undefined;
/**
* 设置步骤状态
* @param status - 新的状态
*/
setStatus(status: ZenStatus): void;
/**
* 设置错误信息
* @param error - 错误角色
*/
setError(error: Error): void;
/**
* 重置步骤状态
*/
reset(): void;
/**
* 设置重试配置
* @param config - 重试配置
* @returns this - 返回当前实例以支持链式调用
*/
retry(config?: ZenRetryConfig): this;
/**
* 设置超时时间
* @param ms - 超时时间(毫秒)
* @returns this - 返回当前实例以支持链式调用
*/
timeout(ms: number): this;
/**
* 执行取消回调
*/
executeOnCancel(): void;
/**
* 清理资源
*/
dispose(): void;
/**
* 处理步骤执行过程中的错误
* @param error - 错误对象
*/
private handleZenError;
}