EventEmitter sınıfını uygulayın: event ve handler parametreleriyle abone olmak için subscribe(event, handler) metodunu ve tüm abone olanları çağırmak için emit(event, data) metodunu. Ayrıca unsubscribe metodunu da uygulayın.
sobes.tech yapay zeka
AI'dan gelen yanıt
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', 'Еще раз'); // Ничего не выведет