当前位置: 首页 > backend >正文

微信小程序,事件总线(Event Bus) 实现

1、util.js文件

/*** 事件总线*/
function createEventBus() {// 私有事件存储对象,通过闭包保持私有性const events = {};return {/*** 监听事件,只执行一次* @param {string} eventName - 事件名称* @param {Function} callback - 回调函数*/once(eventName, callback) {const onceCallback = (...args) => {callback(...args);this.off(eventName, onceCallback);};this.on(eventName, onceCallback);},/*** 监听事件* @param {string} eventName - 事件名称* @param {Function} callback - 回调函数*/on(eventName, callback) {if (!events[eventName]) {events[eventName] = [];}events[eventName].push(callback);},/*** 触发事件* @param {string} eventName - 事件名称* @param {...any} args - 传递给回调的参数*/emit(eventName, ...args) {const callbacks = events[eventName];if (callbacks) {// 复制数组防止回调中修改原数组callbacks.slice().forEach(callback => {callback(...args);});}},/*** 移除事件监听* @param {string} eventName - 事件名称* @param {Function} [callback] - 可选,指定要移除的回调函数*/off(eventName, callback) {const callbacks = events[eventName];if (callbacks) {if (callback) {// 过滤掉指定的回调函数events[eventName] = callbacks.filter(cb => cb !== callback);} else {// 移除整个事件的所有监听delete events[eventName];}}}};
}// 创建事件总线实例
const eventBus = createEventBus();module.exports = {eventBus: eventBus,
}

2、如何使用

const util = require("../../../utils/util.js");//生命周期函数--监听页面加载onLoad: function (options) {const that = this;// 监听事件,只一次util.eventBus.once('aaUpdate', (data) => {console.log(data)});// 监听事件,多次util.eventBus.on('aaUpdate', (data) => {console.log(data)});},// 触发事件saomaHexiao: function () {var that = this;// 触发事件util.eventBus.emit('aaUpdate', {code: 200,message: 'ok'});},

http://www.xdnf.cn/news/18366.html

相关文章:

  • 不同类型代理 IP 在爬虫场景下的表现对比
  • 05 ODS层(Operation Data Store)
  • 集成电路学习:什么是Camera Calibration相机标定
  • 【自用】JavaSE--网络通信
  • 电脑芯片其实更偏向MPU不是CPU,GPU CPU NPU MPU MCU的区别
  • 近端策略优化算法PPO的核心概念和PyTorch实现详解
  • ElasticSearch——常用命令
  • 数据结构-HashSet
  • Android auncher3实现简单的负一屏功能
  • 基于SpringBoot的宠物用品系统【2026最新】
  • Android面试指南(四)
  • AI研究引擎的简单技术实现步骤
  • [软件开发技术栈]从MVVM到MVC
  • 机器学习5
  • Linux入门DAY29
  • (19)python复杂度计算:在线AI(时间复杂)和本地工具(圈复杂度)
  • 什么是Qoder?如何下载?如何体验?Qoder和其他 AI IDE 什么区别?
  • 7.Shell脚本修炼手册---awk基础入门版
  • NewsNow搭建喂饭级教程
  • Java实战:深度解析SQL中的表与字段信息(支持子查询、连接查询)
  • 【Java后端】Spring Boot 实现请求设备来源统计与UA解析全攻略
  • 今天,字节开源Seed-OSS-36B模型,512k上下文
  • OpenHarmony之 蓝牙子系统全栈剖析:从协议栈到芯片适配的端到端实践(大合集)
  • Django中的MVC和MVT模式
  • mac电脑使用(windows转Mac用户)
  • 【个人网络整理】NOIP / 省选 /NOI 知识点汇总
  • 哈希:最长连续序列
  • BGP高级特性
  • 通信工程学习:什么是Template Matching模版匹配
  • 利用 Java 爬虫获取淘宝商品评论实战指南