/** 队列任务的执行方法;取消时会收到对应的 AbortSignal。 */ export type TaskQueueTask = (signal: AbortSignal) => T | Promise; /** 创建单个队列任务时可选的配置。 */ export interface TaskQueueTaskOptions { /** 调用方指定的稳定任务 ID;同一队列中不能重复。 */ id?: string; } /** 创建队列实例时可选的配置。 */ export interface TaskQueueOptions { /** 同时执行的任务数量上限,最小值为 1。 */ concurrency?: number; /** 是否在添加任务后立即开始调度。 */ autoStart?: boolean; } /** 队列当前的任务数量和调度状态。 */ export interface TaskQueueStatus { /** 尚未开始执行的任务数量。 */ pending: number; /** 已经开始且尚未结束的任务数量。 */ active: number; /** 是否暂停启动新的任务。 */ paused: boolean; /** 当前并发数上限。 */ concurrency: number; /** 是否已销毁,销毁后不能继续添加任务。 */ disposed: boolean; } /** 任务被队列取消时产生的标准错误。 */ export declare class TaskQueueCancellationError extends Error { constructor(taskId: string); } /** * 面向浏览器异步任务的轻量 FIFO 队列。 * * 队列没有重试和事件总线等业务策略,仅负责并发、暂停、取消和资源释放。调用方可以将 * 网络请求、文件处理或任意支持 AbortSignal 的异步工作作为任务添加,并在自身领域层 * 处理重试、进度和状态展示。 */ export declare class TaskQueue { private readonly pending; private readonly active; private concurrency; private paused; private disposed; private taskSequence; constructor(options?: TaskQueueOptions); /** * 添加一个任务并返回其完成结果。 * * 任务 ID 重复或队列已销毁时会返回拒绝的 Promise,避免静默覆盖仍在执行的任务。 */ add(task: TaskQueueTask, options?: TaskQueueTaskOptions): Promise; /** 暂停启动新的等待任务;已经执行的任务不会被中断。 */ pause(): void; /** 恢复调度并立即填充空闲执行位。 */ resume(): void; /** 更新并发数;降低并发不会中断已开始的任务。 */ setConcurrency(concurrency: number): void; /** 判断指定 ID 是否正在等待或执行。 */ has(taskId: string): boolean; /** * 取消指定任务。 * * 等待任务会从队列移除;执行中的任务会收到 abort 信号,并在底层异步任务结束前继续 * 占用执行位,从而保证真实并发数不会因取消操作短暂超限。 */ cancel(taskId: string): boolean; /** 取消全部尚未开始的任务,不会影响已经执行的任务。 */ clear(): void; /** 获取队列的只读状态快照。 */ getStatus(): TaskQueueStatus; /** * 销毁队列并取消所有任务。 * * 已开始的任务会收到 abort 信号;它们结束前仍会保留在活动任务集合中,确保不会有 * 悬挂的 Promise 或资源引用被静默丢弃。 */ dispose(): void; private pump; private execute; private cancelRecord; private resolve; private reject; private createTaskId; }