შექმენით EventEmitter კლასი: subscribe(event, handler) მეთოდი ინტერაქტისთვის და emit(event, data) მეთოდი ყველა მიმწოდებლისთვის. ასევე განახორციელეთ unsubscribe მეთოდი.
sobes.tech AI
პასუხი 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', 'Еще раз'); // Ничего не выведет