@skyway-sdk/common
Version:
The official Next Generation JavaScript SDK for SkyWay
82 lines • 3.09 kB
TypeScript
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