@shockpkg/core
Version:
shockpkg core
56 lines (55 loc) • 1.16 kB
TypeScript
/**
* Event dispatcher.
*
* @param context Context object.
*/
export declare class Dispatcher<T> extends Object {
/**
* Event context.
*/
protected readonly _context: any;
/**
* Event handlers.
*/
protected readonly _handlers: Set<(event: T) => any>;
constructor(context: any);
/**
* Add listener.
*
* @param handler Event handler.
*/
on(handler: (event: T) => any): void;
/**
* Remove listener.
*
* @param handler Event handler.
*/
off(handler: (event: T) => any): void;
/**
* Trigger, sync.
*
* @param event Event data.
* @returns Handler count.
*/
triggerSync(event: T): number;
/**
* Trigger, async.
*
* @param event Event data.
* @returns Handler count.
*/
triggerAsync(event: T): Promise<number>;
/**
* Trigger or throw, sync.
*
* @param event Event data.
*/
triggerOrThrowSync(event: T): void;
/**
* Trigger or throw, sync.
*
* @param event Event data.
* @returns Handler count.
*/
triggerOrThrowAsync(event: T): Promise<void>;
}