@discoveryjs/discovery
Version:
Frontend framework for rapid data (JSON) analysis, shareable serverless reports and dashboards
25 lines (24 loc) • 879 B
TypeScript
type OnChangeCallback<T> = (value: T, unsubscribe: () => void) => void | Promise<void>;
type Subscriber<T> = {
callback: OnChangeCallback<T> | null;
subscriber: Subscriber<T> | null;
};
export declare class Observer<T> {
#private;
subscriber: Subscriber<T> | null;
value: T;
constructor(initValue: T, shouldUpdate?: (a: T, b: T) => boolean);
get readonly(): {
subscribe: Observer<T>["subscribe"];
subscribeSync: Observer<T>["subscribeSync"];
unsubscribe: Observer<T>["unsubscribe"];
readonly value: T;
};
subscribe(callback: OnChangeCallback<T>): () => void;
subscribeSync(callback: OnChangeCallback<T>): () => void;
unsubscribe(callback: OnChangeCallback<T>): void;
shouldUpdate(newValue: T, oldValue: T): boolean;
set(value: T): boolean;
asyncSet(value: T): Promise<boolean>;
}
export {};