EventEmitter класын жүзеге асырыңыз: оқиғаға жазылу үшін subscribe(event, handler) әдісі, барлық жазылушыларды шақыру үшін emit(event, data) әдісі және unsubscribe әдісі.
AI-дан жауап
sobes.tech 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', 'Еще раз'); // Ничего не выведет