Sobes.tech
Middle

Rakenda EventEmitter klass: meetod subscribe(event, handler) sündmusele tellimiseks ja meetod emit(event, data) kõigi tellijate kutsumiseks. Samuti rakenda meetod unsubscribe.

sobes.tech AI

Vastus AI-lt

javascript class EventEmitter { constructor() { this.events = {}; }

subscribe(event, handler) { if (!this.events[event]) { this.events[event] = new Set(); } this.events[event].add(handler); return { unsubscribe: () => this.unsubscribe(event, handler) }; }

emit(event, data) { if (!this.events[event]) return; for (const handler of this.events[event]) { handler(data); } }

unsubscribe(event, handler) { if (!this.events[event]) return; this.events[event].delete(handler); if (this.events[event].size === 0) { delete this.events[event]; } } }

// Пример использования: const emitter = new EventEmitter(); const sub = emitter.subscribe('message', data => console.log('Получено:', data)); emitter.emit('message', 'Привет!'); // Выведет: Получено: Привет! sub.unsubscribe(); emitter.emit('message', 'Еще раз'); // Ничего не выведет