OpenHarmony之 eTS Emitter 进程内事件订阅通知组件的使用-鸿蒙开发者社区-51CTO.COM

OpenHarmony之 eTS Emitter 进程内事件订阅通知组件的使用 精华

Buty9147
发布于 2022-5-21 22:17
浏览
2收藏

OpenHarmony eTS Emitter 进程内事件通知组件的使用

@toc

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

效果:
OpenHarmony之 eTS Emitter 进程内事件订阅通知组件的使用-鸿蒙开发者社区

标签
已于2022-5-22 10:41:33修改
3
收藏 2
回复
举报
4条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

get到了新知识!

回复
2022-5-23 15:03:28
NL_AIDC_XJS
NL_AIDC_XJS

请问有测试过在SA,服务中使用emitter发送事件吗?

回复
2022-5-25 18:22:48
Buty9147
Buty9147 回复了 NL_AIDC_XJS
请问有测试过在SA,服务中使用emitter发送事件吗?

是遇到什么问题了吗

回复
2022-5-25 19:26:09
NL_AIDC_XJS
NL_AIDC_XJS 回复了 Buty9147
是遇到什么问题了吗

我有个业务场景,在SA上收到客户端请求的业务数据后,在页面上显示客户端的业务数据内容,这个是在分布式场景下,跨设备。

使用公共事件解决了,谢谢。

回复
2022-5-26 15:05:16
回复
    相关推荐