UNPKG

@studiometa/js-toolkit

Version:

A set of useful little bits of JavaScript to boost your project! 🚀

45 lines (44 loc) • 1.1 kB
/** * Manage tasks in a queue. */ export declare class Queue { /** * List of tasks. */ tasks: Array<(...args: unknown[]) => unknown>; /** * Number of tasks running in a single batch. */ concurrency: number; /** * A function to schedule the next batch. */ waiter: (cb: (...args: unknown[]) => unknown) => unknown; /** * Is schedule running? */ isScheduled: boolean; /** * Constructor. * * @param {number} concurrency Number of tasks running in a single batch. * @param {(cb: (...args:unknown[]) => unknown) => unknown} waiter Scheduler for the next batch execution. */ constructor(concurrency: number, waiter?: (cb: (...args: unknown[]) => unknown) => unknown); /** * Add a task to the queue. */ add(task: () => unknown): Promise<unknown>; /** * Schedule next flush. */ scheduleFlush(): void; /** * Flush current batch. */ flush(): void; /** * Run the queue. */ run(tasks: Array<(...args: unknown[]) => unknown>): void; }