事件发布订阅模式通过事件中心实现对象间松耦合通信,包含发布者、订阅者和事件中心三个角色;JavaScript中可借助EventEmitter类实现subscribe、publish和unsubscribe方法;该模式广泛应用于DOM事件、跨组件通信和状态管理,提升代码解耦与可维护性。

JavaScript中的事件发布订阅模式,是一种实现对象间松耦合通信的经典设计模式。它通过引入一个中间角色——事件中心,让消息的发送方(发布者)和接收方(订阅者)无需直接引用对方,就能完成信息传递。这种模式在前端组件通信、状态管理以及异步任务处理中非常实用。
理解这个模式的关键是弄清三个基本角色:
下面是一个基于JavaScript类的简单实现,包含了订阅、发布和取消订阅的核心功能:
// 定义一个事件中心类 class EventEmitter { constructor() { // 使用对象存储不同事件名对应的回调函数数组 this.events = {}; } // 订阅事件 subscribe(event, callback) { if (!this.events[event]) { this.events[event] = []; } this.events[event].push(callback); // 返回一个取消订阅的方法,便于后续清理 return () => { this.unsubscribe(event, callback); }; } // 发布事件 publish(event, data) { if (this.events[event]) { this.events[event].forEach(callback => callback(data)); } } // 取消订阅 unsubscribe(event, callback) { if (this.events[event]) { this.events[event] = this.events[event].filter(cb => cb !== callback); } } } // 使用示例 const eventBus = new EventEmitter(); // 订阅 "userLogin" 事件 const unSubscribe = eventBus.subscribe('userLogin', (userInfo) => { console.log('欢迎用户:', userInfo.name); }); // 再订阅一次,可以有多个响应 eventBus.subscribe('userLogin', () => { console.log('更新页面状态'); }); // 发布 "userLogin" 事件 eventBus.publish('userLogin', { name: 'Alice' }); // 控制台输出: // 欢迎用户: Alice // 更新页面状态这种模式在日常开发中随处可见:
立即学习“Java免费学习笔记(深入)”;
addEventListener就是订阅,用户操作是发布,removeEventListener用于取消订阅,防止内存泄漏。$bus实例实现跨组件通信。以上就是JavaScript消息队列_事件发布订阅模式实现的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号