UNPKG

475 BTypeScriptView Raw
1export declare type PromiseResolve<T> = (value: T | PromiseLike<T>) => void;
2export declare type PromiseReject = (reason?: any) => void;
3export declare type Task<T> = () => Promise<T>;
4export declare type Record<T> = [Task<T>, PromiseResolve<T>, PromiseReject];
5export declare class Mutex<T> {
6 private busy;
7 private readonly queue;
8 synchronize(task: Task<T>): Promise<T>;
9 dequeue(): Promise<void> | undefined;
10 execute(record: Record<T>): Promise<void>;
11}