鸿蒙(4) eTS Emitter 进程内事件订阅通知组件的使用

2024-11-15  本文已影响0人  cain07

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

上一篇 下一篇

猜你喜欢

热点阅读