OpenHarmony eTS Emitter 进程内事件通知组件的使用
目录
1.能做什么
提供用于发送和处理进程内事件的方法。
样例中选取了一个选购商品的场景,在Index页面完成对商品选购事件的订阅,在Goods页面选择商品后完成对事件的通知,在Index页面对通知进行处理,通知的数据格式可自定义。
2.使用步骤
1).引用组件
import emitter from '@ohos.events.emitter';
复制
2).订阅事件
在aboutToAppear生命周期函数完成订阅,绑定自定义回调处理函数onEventHandel
aboutToAppear() {
//定义事件ID
var innerEvent = { eventId: 1001 }
//以持久化方式订阅某个事件并接收事件回调。bind处理函数
emitter.on(innerEvent, this.onEventHandel.bind(this))
}
//处理事件
onEventHandel(eventData) {
logger.getInstance(this).debug(`eventData= ${eventData}`)
let noticeType = eventData.data.noticeType
logger.getInstance(this).debug(`noticeType:${noticeType}`)
//物业通知
if (noticeType === 1) {
this.nCounts = this.nCounts + 1
this.notice = eventData.data
logger.getInstance(this).debug(`this.notice:${JSON.stringify(this.notice)}`)
}
}
复制
3)事件通知
sendEventTest() {
var innerEvent = { eventId: 1001 }
var eventData = {
data: {
"nIndex": 1001,
"noticeType": 1,
"noticeContent": "this is a notice"
}
}
logger.getInstance(this).debug(`emitter send eventData.data= ${JSON.stringify(eventData.data)}`)
//发布事件
emitter.emit(innerEvent, eventData)
}
复制
当每次发布事件时,都会触发onEventHandel函数对事件进行处理,业务处理可以是数据的累计,也可以时消息的及时通知。
3.Emitter组件Gitee地址
https://gitee.com/openharmony/app_samples/tree/master/Notification/Emitter