yqueue
Version:
Yet another concurrent task queue
22 lines (21 loc) • 847 B
TypeScript
export declare const DEFAULT_QUEUE_CONCURRENCY = 10;
export interface YQueueOptions {
concurrency?: number;
}
export interface EnqueueOptions {
priority: number;
}
export declare type Task<TaskResultType> = (() => PromiseLike<TaskResultType>) | (() => TaskResultType);
export declare class YQueue {
readonly options?: YQueueOptions | undefined;
private readonly semaphore;
readonly concurrency: number;
private onIdleWaits;
private onQueueLessThanWaits;
constructor(options?: YQueueOptions | undefined);
run<TaskResultType>(fn: Task<TaskResultType>, options?: Partial<EnqueueOptions>): Promise<TaskResultType>;
add<TaskResultType>(fn: Task<TaskResultType>, options?: Partial<EnqueueOptions>): void;
onIdle(): Promise<void>;
onQueueSizeLessThan(size: number): Promise<void>;
}
export default YQueue;