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

鸿蒙emitter 订阅事件封装 EmitterUtils

适用于api11 和api12  废话不多说,直接上代码

import emitter from '@ohos.events.emitter';
import { StringUtils } from '@ohos/flutter_ohos';export  class EmitterUtils{/*** 发射字符串类型的* @param eventId* @param data*/public  static sendEvent(eventId:string,data:string=''){let eventData: emitter.EventData = {data: {"content": data,}};let options: emitter.Options = {priority: emitter.EventPriority.HIGH};emitter.emit(eventId, options, eventData);}/*** 发送一个object ,并将eventId 带过去* @param eventId* @param data*/public  static sendObjetEvent(eventId:string,data:object){let eventData: emitter.EventData = {data: {"content": data,"eventId":eventId}};let options: emitter.Options = {priority: emitter.EventPriority.HIGH};emitter.emit(eventId, options, eventData);}/*** 监听string* @param eventId* @param onReceive*/public static listenString(eventId:string,onReceive:(content:string)=>void){// 收到eventId为"eventId"的事件后执行回调函数emitter.on(eventId, (data:emitter.EventData) => {let content:string=data.data?.content;if(StringUtils.isNotEmpty(content)){onReceive(content)}});}/*** 监听对象* @param eventId* @param onReceive*/public static listen(eventId:string,onReceive:(data:emitter.EventData)=>void){// 收到eventId为"eventId"的事件后执行回调函数emitter.on(eventId, (data:emitter.EventData) => {onReceive(data)});}/*** 取消eventID的所有事件回调处理函数* @param ventId*/public  static  closeEvent(ventId:string){emitter.off(ventId);}}

发送字符类型

EmitterUtils.sendEvent(EmitterIdConstants.TAB_DASHBOARD_NO_TITLE_DATA,"noTitle")

接收字符串类型

EmitterUtils.listenString(EmitterIdConstants.TAB_DASHBOARD_NO_TITLE_DATA, (content: string) => {if (StringUtils.isNotEmpty(content)) {//...todo...}})

发送对象类型

let data= await this.fetchKnowledgeTitles();
let map = new Map<string, object>();
map.set("titleList", data ? data.result || [] : []);
EmitterUtils.sendObjetEvent(EmitterIdConstants.GET_TITLE_LIST,map)

接收对象类型

EmitterUtils.listen(EmitterIdConstants.GET_TITLE_LIST, (data: emitter.EventData) => {if (data.data != null){try {let map = data.data?.content as Map<string, Object>} catch (e) {}}})

销毁这个订阅

 aboutToDisappear(): void {EmitterUtils.closeEvent(EmitterIdConstants.ON_HOME_TAB_CLICK)}

上面 EmitterIdConstants 是你起的事件常量名字

export class EmitterIdConstants{static readonly ON_HOME_TAB_CLICK = 'home_tab_click';static readonly GET_TITLE_LIST = 'get_title_list'; //title List........
}
http://www.lryc.cn/news/366755.html

相关文章:

  • C语言---深入指针(4)
  • 【启程Golang之旅】让文件操作变得简单
  • oracle视图无法删除,orcl视图删除卡住怎么办
  • ug编程怎么录制宏:一步步探索自动化编程的奥秘
  • 深度学习Week16——数据增强
  • python-自幂数判断
  • RocketMQ教程(三):RocketMQ的核心组件
  • 46.SQLserver中按照多条件分组:查询每个地方的各种水果的种植数量,新增时,一个地方同时有几种水果,只插入一条记录,同时多种水果之间使用|隔开
  • C盘满了怎么办,Windows11的C盘没有磁盘清理选项怎么办,一次搞定
  • 「动态规划」当小偷改行去当按摩师,会发生什么?
  • Python | 排队取奶茶
  • mysql当前状态分析(show status)
  • Google Earth Engine(GEE)——使用机器学习进行金三角大米分布图
  • MyBatis一级和二级缓存介绍
  • PowerDesigner遍历导出所有表结构到Excel
  • JavaSE——抽象类和接口
  • 生成式人工智能 - stable diffusion web-ui安装教程
  • 11-Linux文件系统与日志分析
  • mac M1下安装PySide2
  • 超详解——识别None——小白篇
  • C++的MQTT开发:使用Paho的C++接口实现消息发布、订阅、连接RabbitMQ
  • 深度网络学习笔记(二)——Transformer架构详解(包括多头自注意力机制)
  • Python 快速查找并替换Excel中的数据
  • KafkaStream Local Store和Global Store区别和用法
  • PowerDesigner导入Excel模板生成数据表
  • STM32 HAL库开发——入门篇(3):OLED、LCD
  • 在Linux中查找文件命令的几种方法
  • 【TB作品】MSP430F5529 单片机,温度控制系统,DS18B20,使用MSP430实现的智能温度控制系统
  • 立创小tips
  • Html/HTML5常用标签的学习