Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 143x 143x 143x 143x 143x 15x 15x 15x 15x 143x 23x | export class Observer<T> { private subscribers: Array<(observed: T) => void>; observed: T | null; constructor() { this.subscribers = []; this.observed = null; } subscribe = (subscriber: (newObserved: T | null) => void) => { this.subscribers.push(subscriber); // unsubscribe function return () => { const index = this.subscribers.indexOf(subscriber); this.subscribers.splice(index, 1); }; }; publish = (data: T | null) => { this.subscribers.forEach((subscriber) => subscriber(data)); }; } |