UNPKG

await-num-q

Version:

一个用于 处理 指定并行异步任务数量的 队列

70 lines (69 loc) 1.94 kB
/** * 异步参数对象 * @property max 最大并发数 * @property retry 失败重试次数 * @property endCallback 队列结束回调函数 */ export type AsyncParams = { max?: number; retry?: number; endCallback?: () => void; }; /** * 异步任务对象 */ export type RunFunBoj = { status: "wait" | "ing" | "end" | "fail"; target: Function; retry: number; callback?: Function; err?: Function; }; /** * 异步队列 */ export declare class asyncQueue { #private; constructor({ max, retry, endCallback, }: AsyncParams); /** * 添加任务 * @param f 目标函数 * @param callback 成功回调函数 * @param err 错误回调函数 * @returns 添加成功与否 */ push(f: Function, callback?: Function, err?: Function): boolean; /** * 清除运行完成的任务 */ clear(fial?: boolean): void; /** * 添加并运行任务 若是没有传入函数 运行 之前传入的任务 * @param f 目标函数 * @param callback 成功回调函数 * @param err 错误回调函数 * @returns 添加成功与否 */ run(f?: Function, callback?: Function, err?: Function): Promise<void>; /** * 获取所有的 任务 * @returns */ getTasks(): RunFunBoj[]; /** * 异步运行并得到返回值 * @param fun 目标函数 * @returns */ wait(fun: (...arg: any) => any): Promise<any>; } /** * 在某个异步请求 参数相同 返回的值相同 * 并且在同一时间段 会发送多个亲求的场景 * 压缩正在进行的异步请求 为一个 * 避免同时条用多个请求导致后续请求 挂起 * @param asyncFun 异步函数 * @param param 函数传参 必须传入支持序列化的 * @returns */ export declare function MergeAsync<T extends (...args: any) => Promise<any>>(asyncFun: T, ...param: Parameters<T>): Promise<ReturnType<T>>;