interface AgentTaskStepOptions { title: string; shareData?: any; handle?(): { (): Promise }; } export class AgentTaskStep { // 任务标题 title: string = ''; // 共享数据 shareData: any = {}; // 私有数据 data: any = {}; /** * 任务初始化函数 * 因为构造器里不能执行异步函数,而metaData里传进来的数据中可能有需要异步处理的函数 */ isInit: boolean = false; async init(metaData: AgentTaskStepOptions) {} // 父级组件 parentComp: any | undefined; parentIndex: number | undefined; /** * 任务生命周期 * constructor() // 构造时执行一次 * onInit() // 初始化后执行一次 * onProgress() // 进度变化时执行一次 * onComplete() // 完成前执行一次 */ constructor(metaData: AgentTaskStepOptions) { this.title = metaData.title; this.shareData = metaData?.shareData; if (metaData.handle) { this.handle = metaData.handle; } this.init(metaData); // 处理异步函数 } onInit(step: AgentTaskStep) { this.isInit = true; } beforeHandle(step: AgentTaskStep) {} afterhandle(step: AgentTaskStep) {} onProgress(step: AgentTaskStep) {} onComplete(step: AgentTaskStep) {} onError(step: AgentTaskStep) {} /** * 执行任务 * @desc 函数内必须有明确的完成、结束情形和函数进度变化指示 */ progress: number = 0; handle(): Promise | any { this.beforeHandle(this); this.onComplete(this); this.onError(this); return true; } /** * 函数报错 */ error: string = ''; // 报错原因 }