Sobes.tech
Middle

Иштирокчига жазылуу үчүн 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', 'Еще раз'); // Ничего не выведет