Implementeer de klasse EventEmitter: de methode subscribe(event, handler) voor het abonneren op een gebeurtenis en de methode emit(event, data) om alle abonnees aan te roepen. Implementeer ook de methode unsubscribe.
sobes.tech AI
Antwoord van AI
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', 'Еще раз'); // Ничего не выведет