export declare type Executer = { execute: (task: Task) => Promise; }; /** * 对于相同的任务,可以使用多个执行器(多个worker)的场景 */ export declare class ParallelScheduler { private _workingExecuters; private _freeExecuters; private _tasks; constructor({ max, clazz }: { max?: number; clazz: () => E; }); /** * 添加任务 * @param task */ addTask(task: Parameters[0]): void; /** * 添加执行器 * @param clazz * @param num */ private _addExecuter; /** * 是否有空闲的执行器 * @returns */ private _hasFreeExecuter; /** * 获取空闲的执行器 * @returns */ private _getFreeExecuter; /** * 是否有未完成任务 * @returns */ private _hasTask; /** * 获取任务 * @returns */ private _getTask; /** * 释放执行器 * @param executer */ private _releaseExecuter; /** * 执行任务,执行完后释放 * @param executer * @param task * @returns */ private _execute; /** * 校验是否还有任务需要执行 * 有两种情况需要校验:1、有新任务添加进来 2、当一个executer被释放 */ private _check; }