vulpix
Version:
CSP-like channels library
26 lines (25 loc) • 750 B
TypeScript
import { DeferredPromise } from '../async/deferred-promise';
import { Callback } from '../auxiliary-types';
declare namespace WaitGroup {
type DoneSignal = InstanceType<typeof DoneSignal>;
}
declare class DoneSignal {
private readonly onDone;
private isDone;
constructor(onDone: Callback);
done(): void;
}
declare class WaitGroup {
private size;
private doneCount;
private emittedSignals;
private onCompletion?;
private readonly completionPromise;
constructor(size: number, onCompletion?: Callback);
wait(): DeferredPromise<void>;
add(n: number): void;
isComplete(): boolean;
get signal(): DoneSignal;
}
declare function waitGroup(size: number): WaitGroup;
export { WaitGroup, waitGroup };