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]
- Python 实现支持多监听器与取消注册的发布 - 订阅模式(字节豆包 | 338点数解答 | 2024-11-08 10:26:15)149
- JS 巧实现发布 - 订阅模式:EventEmitter 与 Listener 类全解析(字节豆包 | 301点数解答 | 2024-11-08 10:26:43)256
- JS 实现发布 - 订阅模式:EventEmitter 与 Listener 类详解(讯飞星火 | 465点数解答 | 2024-11-08 10:27:23)126
- Python 实现:EventEmitter 与 Listener 构建简单发布 - 订阅模式 (字节豆包 | 215点数解答 | 2024-11-08 22:20:55)153
- JavaScript 实现:EventEmitter 与 Listener 构建简单发布 - 订阅模式(字节豆包 | 209点数解答 | 2024-11-08 22:33:35)147
- Python 实现带取消注册功能的发布 - 订阅模式:EventEmitter 与 Listener 类详解 (字节豆包 | 316点数解答 | 2024-11-09 00:54:20)159
- JavaScript:实现支持多监听器与取消注册的发布 - 订阅模式(字节豆包 | 320点数解答 | 2024-11-09 00:55:08)216
- Python 实现带取消注册功能的简单发布 - 订阅模式:EventEmitter 与 Listener 类详解(百度文心 | 809点数解答 | 2024-11-09 22:17:06)131
- JavaScript 实现支持多监听器及取消注册的发布 - 订阅模式(字节豆包 | 308点数解答 | 2024-11-09 22:50:45)128
- "Debugging 'Cannot Read Properties of Null (reading \'userid\')' Error in Vue Components: Steps and Example"(讯飞星火 | 614点数解答 | 2024-11-28 14:31:57)293
- HTML+jQuery 实现列表元素悬停动画效果:代码详解与注意事项(字节豆包 | 475点数解答 | 2024-12-19 14:58:05)393
- HTML+jQuery:打造动态导航栏动画效果及注意事项(字节豆包 | 495点数解答 | 2024-12-19 14:58:06)337