JavaScript 实现:EventEmitter 与 Listener 构建简单发布 - 订阅模式
以下是使用 JavaScript 实现的简单发布-订阅模式: ```javascript class EventEmitter { constructor() { this.listeners = {}; } on(eventName, listener) { if (!this.listeners[eventName]) { this.listeners[eventName] = []; } this.listeners[eventName].push(listener); } emit(eventName, data) { if (this.listeners[eventName]) { this.listeners[eventName].forEach(listener => listener.handle(data)); } } } class Listener { handle(data) { console.log(`Received data: ${data}`); } } // 使用示例 const emitter = new EventEmitter(); const listener = new Listener(); emitter.on('myEvent', listener); emitter.emit('myEvent', 'Hello, World!'); ``` ######[AI写代码神器 | 209点数解答 | 2024-11-08 22:33:35]
相关提问
- JavaScript:实现支持多监听器与取消注册的发布 - 订阅模式(字节豆包 | 320点数解答 | 2024-11-09 00:55:08)212
- Python 实现支持多监听器与取消注册的发布 - 订阅模式(字节豆包 | 338点数解答 | 2024-11-08 10:26:15)145
- JS 巧实现发布 - 订阅模式:EventEmitter 与 Listener 类全解析(字节豆包 | 301点数解答 | 2024-11-08 10:26:43)252
- JS 实现发布 - 订阅模式:EventEmitter 与 Listener 类详解(讯飞星火 | 465点数解答 | 2024-11-08 10:27:23)119
- Python 实现:EventEmitter 与 Listener 构建简单发布 - 订阅模式 (字节豆包 | 215点数解答 | 2024-11-08 22:20:55)149
- JavaScript 实现:EventEmitter 与 Listener 构建简单发布 - 订阅模式(字节豆包 | 209点数解答 | 2024-11-08 22:33:35)143
- Python 实现带取消注册功能的发布 - 订阅模式:EventEmitter 与 Listener 类详解 (字节豆包 | 316点数解答 | 2024-11-09 00:54:20)154
- Python 实现带取消注册功能的简单发布 - 订阅模式:EventEmitter 与 Listener 类详解(百度文心 | 809点数解答 | 2024-11-09 22:17:06)128
- JavaScript 实现支持多监听器及取消注册的发布 - 订阅模式(字节豆包 | 308点数解答 | 2024-11-09 22:50:45)124
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)362
- Flutter 3.22 发布!更新内容大揭秘,附计数器代码示例(讯飞星火 | 471点数解答 | 2024-05-20 11:30:28)200
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)333