酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

JS 巧实现发布 - 订阅模式:EventEmitter 与 Listener 类全解析

以下是使用 JavaScript 实现的发布-订阅模式: ```javascript class EventEmitter { constructor() { this.events = {}; } on(eventName, listener) { if (!this.events[eventName]) { this.events[eventName] = []; } this.events[eventName].push(listener); } emit(eventName, data) { if (this.events[eventName]) { this.events[eventName].forEach(listener => listener(data)); } } off(eventName, listener) { if (this.events[eventName]) { this.events[eventName] = this.events[eventName].filter(l => l!== listener); } } } class Listener { handle(data) { console.log(`Received data: ${data}`); } } // 测试代码 const emitter = new EventEmitter(); const listener1 = new Listener(); const listener2 = new Listener(); emitter.on('event1', listener1.handle); emitter.on('event1', listener2.handle); emitter.emit('event1', 'Hello, World!'); emitter.off('event1', listener1.handle); emitter.emit('event1', 'Goodbye!'); ``` ######[AI写代码神器 | 301点数解答 | 2024-11-08 10:26:43]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]