UNPKG

taozen

Version:

一个轻量级的任务管理库

138 lines (137 loc) 3.79 kB
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; }