酷代码 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,...args) { if (this.events[eventName]) { this.events[eventName].forEach(listener => listener(...args)); } } off(eventName, listener) { if (this.events[eventName]) { this.events[eventName] = this.events[eventName].filter(l => l!== listener); } } } class Listener { handle(...args) { console.log(`Received event with args: ${args}`); } } // 示例用法 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', 1, 2, 3); emitter.off('event1', listener1.handle); emitter.emit('event1', 4, 5, 6); ``` ######[AI写代码神器 | 313点数解答 | 2024-11-12 10:38:45]

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