async-pond
Version:
一个使用 promise 来解决并发异步控制的方案,无任何依赖
33 lines (32 loc) • 901 B
TypeScript
interface IPoolControlers {
iteratorFn: Function;
param: any;
flag: symbol;
}
interface IOptions {
isReTry?: boolean;
retryNum?: number;
afterInitSingleAsync?: (runingAsyncPool: Promise<any>[]) => any;
}
export default class AsyncPoolPro {
poolLimit: number;
private promisePool;
private poolControlers;
private poolIndex;
private whileControl;
private promiseGroups;
private options;
constructor(poolLimit?: number, options?: IOptions);
push(poolParams: any, iteratorFn: Function): Promise<any[]>;
/**
* 延迟生成Promise异步
* @param poolControlers 异步请求的参数
*/
generatorPromise(poolControlers?: IPoolControlers[]): Promise<any> | undefined;
/**
* 并发控制逻辑
* @param {boolean} isInit 是否初始化控制?
*/
asyncPool(isInit: boolean): Promise<void>;
}
export {};