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 | 1x 1x 3x 10x 5x 5x 9x 1x | export type FanOutUnsubscribe = () => void; export type FanOutListener<D> = (data: D) => void; export class FanOut<D> { public readonly listeners = new Set<FanOutListener<D>>(); public emit(data: D): void { this.listeners.forEach((listener) => listener(data)); } public listen(listener: FanOutListener<D>): FanOutUnsubscribe { const listeners = this.listeners; listeners.add(listener); return () => listeners.delete(listener); } } |