自己动手做导航网站,什么直播可以做游戏视频网站,网业怎么保存到桌面,网站建设方面的文章需求背景#xff1a;
在开发过程中#xff0c;肯定会出现触发特定事件#xff0c;需要全局进行通知#xff0c;与之相关的部分进行执行相应的修改方法。举个例子#xff1a;修改了用户个人昵称#xff0c;需要进行全局通知#xff0c;在涉及昵称的部分收到通知后#…需求背景
在开发过程中肯定会出现触发特定事件需要全局进行通知与之相关的部分进行执行相应的修改方法。举个例子修改了用户个人昵称需要进行全局通知在涉及昵称的部分收到通知后进行重新调用个人信息接口
EventHub模块介绍
在ArkTs中EventHub提供这个对应功能如下是在官方文档中的介绍: EventHub模块提供了事件中心提供订阅、取消订阅、触发事件的能力 实践操作
1.模块化处理
在官方文档中介绍每次使用EventHub功能前需要通过Ability实例的成员变量context获取 所以为了简便使用方法以及使用统一一个EventHub模块所以我将其方法进行模块化处理
/// EventHubUtil.ets
let context getContext(this)
let eventhub context.eventHubexport class EventHubUtil {/// 订阅事件static on(eventName: string, callback: Function) {eventhub.on(eventName, callback)}/// 取消订阅事件static off(eventName: string, callback?: Function) {eventhub.off(eventName, callback)}/// 触发事件static emit(eventName: string, ...params: Object[]) {eventhub.emit(eventName, params)}
}2.订阅指定事件
在我需要订阅、监听指定事件是否发生时具体操作方法 ps:下方均以需要更新用户个人信息为例 在用户信息修改后外部页面也需要进行更改用户信息的地方进行事件监听
EventHubUtil.on(updateUserInfo, () {this.requestUserInfo()})EventHubUtil.on(withParams, this.LogParams})LogParams(param1, param2) {console.log(LogParams is called, param1 , param2)
}‘updateUserInfo’: 订阅事件名 () {this.requestUserInfo()匿名函数是在收到事件通知后执行匿名函数对应内容方法 this.LogParams: 带参数自定义方法收到事件通知后获取对应参数执行该方法 3.取消订阅指定事件
在页面销毁时对应的订阅事件也需要进行销毁以减少系统资源消耗
aboutToDisappear() {EventHubUtil.off(updateUserInfo, () {this.requestUserInfo()})EventHubUtil.off(withParams, this.LogParams})
}LogParams(param1, param2) {console.log(LogParams is called, param1 , param2)
}此处同理 ‘updateUserInfo’: 订阅事件名 () {this.requestUserInfo()匿名函数 this.LogParams: 带参数自定义方法 4. 触发指定事件
在我需要进行触发指定事件时执行的方法 在例子中则为成功修改了用户信息时进行触发指定事件以达到通知其他订阅事件处进行信息修改
// 修改用户个人信息请求
HttpApiManager.getInstance().updateUserInfo(new UserInfoBean(null, text)).then((data: UserInfoBean) {this.userInfo data// 触发更新用户信息事件EventHubUtil.emit(updateUserInfo)ToastUtil.getInstance().showToast(修改成功)}).catch(error {ToastUtil.getInstance().showToast(error.message)})// 带参数方法事件触发
EventHubUtil.emit(withParams, 111, 222)
EventHubUtil.emit(withParams, 111)
// 触发后数据打印
LogParams is called, 111, 222
LogParams is called, 111, undefined在触发事件处简单写法只需填写对应的事件名称即可 在触发事件也可以填写需传递的参数在订阅事件处则会以参数的方式传入对应callback方法 参考文档
EventHub官方文档地址
当前HarmonyOs仍在初步学习过程中大家如果感兴趣或者有问题可以一起沟通交流 如果该文章对你有所帮助的话可以点赞、收藏并关注一下后续会持续更新更多技术内容