@senspark/ee
Version:
utility library for cocos creator
33 lines (29 loc) • 940 B
text/typescript
export class ObserverManager<T> {
/** Observes language changing events. */
private observers: { [index: string]: T | undefined };
public constructor() {
this.observers = {};
}
/** Adds an observer whose the specified key. */
public addObserver(key: string, observer: T): boolean {
if (this.observers[key] !== undefined) {
return false;
}
this.observers[key] = observer;
return true;
}
/** Removes an observer whose the specified key. */
public removeObserver(key: string): boolean {
if (this.observers[key] === undefined) {
return false;
}
delete this.observers[key];
return true;
}
public dispatch(callback: (observer: T) => void): void {
Object.keys(this.observers).forEach(key => {
const observer = this.observers[key];
callback(observer!);
});
}
}