idlevamp/src/model/supervisor.ts

25 lines
409 B
TypeScript

export class Supervisor {
#subscriberI: number = 0
#subscribers: Record<number, () => void> = {}
constructor() {
}
notify() {
for (let i in this.#subscribers) {
this.#subscribers[i]();
}
}
onNotify(cb: () => void) {
let i = this.#subscriberI++;
this.#subscribers[i] = cb;
return i;
}
removeOnNotify(handle: number) {
delete this.#subscribers[handle]
}
}