UNPKG

@skyway-sdk/common

Version:

The official Next Generation JavaScript SDK for SkyWay

82 lines 3.09 kB
export interface EventInterface<T> { emit: (arg: T) => void; removeAllListeners: () => void; add: (callback: (args: T) => void) => { removeListener: () => void; disposer: (disposer: EventDisposerInterface) => void; }; once: (callback: (arg: T) => void) => { removeListener: () => void; disposer: (disposer: EventDisposerInterface) => void; }; asPromise: (timeLimit?: number) => Promise<T>; watch: (callback: (arg: T) => boolean | undefined | null, timeLimit?: number) => Promise<T>; } interface PrivateEventInterface<T> extends EventInterface<T> { asPromise: (timeLimit?: number, disposer?: PrivateEventDisposerInterface) => Promise<T>; watch: (callback: (arg: T) => boolean | undefined | null, timeLimit?: number, disposer?: PrivateEventDisposerInterface) => Promise<T>; } export declare class Event<T> implements PrivateEventInterface<T> { private _onSetListener; private _stack; private _eventIndex; /**@internal */ constructor(_onSetListener?: () => void); /**@internal */ emit: (arg: T) => void; /**@internal */ removeAllListeners: () => void; /**@internal */ pipe: (event: Event<T>) => { removeListener: () => void; disposer: (disposer: EventDisposerInterface) => void; }; /** * イベントが起きた時に実行する関数を登録する。 * 戻り値として関数の登録を解除する関数が帰ってくる */ add: (callback: (args: T) => void) => { removeListener: () => void; disposer: (disposer: EventDisposerInterface) => void; }; /**イベントが起きた時に一度だけ実行される関数を登録する */ once: (callback: (arg: T) => void) => { removeListener: () => void; disposer: (disposer: EventDisposerInterface) => void; }; /** * イベントが起きた時に Promise が resolve される * @param timeLimit ms */ asPromise: (timeLimit?: number, disposer?: PrivateEventDisposerInterface) => Promise<T>; /** * イベントが起きた時に実行される boolean を返す関数を登録する。 * 登録した関数が true を返した時に Promise が resolve される * */ watch: (callback: (arg: T) => boolean | undefined | null, timeLimit?: number, disposer?: PrivateEventDisposerInterface) => Promise<T>; /**@internal */ get length(): number; } /**@internal */ export declare class Events { events: Event<any>[]; make<T>(): Event<T>; dispose(): void; } /**@internal */ export interface EventDisposerInterface { push: (disposer: () => void) => void; dispose: () => void; } interface PrivateEventDisposerInterface extends EventDisposerInterface { remove: (disposer: () => void) => void; } /**@internal */ export declare class EventDisposer implements PrivateEventDisposerInterface { private _disposer; push(disposer: () => void): void; remove(disposer: () => void): void; dispose(): void; } export {}; //# sourceMappingURL=event.d.ts.map