公共事件发布
场景介绍
当需要发布某个自定义公共事件时,可以通过publish()方法发布事件。发布的公共事件可以携带数据,供订阅者解析并进行下一步处理。
须知: 已发出的粘性公共事件后来订阅者也可以接收到,其他公共事件都需要先订阅再接收,订阅参考公共事件订阅章节。
接口说明
详细接口见接口文档。
接口名 | 接口描述 |
---|---|
publish(event: string, callback: AsyncCallback) | 发布公共事件。 |
publish(event: string, options: CommonEventPublishData, callback: AsyncCallback) | 指定发布信息并发布公共事件。 |
发布不携带信息的公共事件
不携带信息的公共事件,只能发布无序公共事件。
-
导入模块。
import commonEventManager from '@ohos.commonEventManager'; import Base from '@ohos.base';
-
传入需要发布的事件名称和回调函数,发布事件。以发布自定义事件"custom_event"为例:
// 发布公共事件 commonEventManager.publish("custom_event", (err: Base.BusinessError) => { if (err) { console.error(`[CommonEvent] PublishCallBack err=${JSON.stringify(err)}`); } else { console.info(`[CommonEvent] Publish success`); } });
发布携带信息的公共事件
携带信息的公共事件,可以发布为无序公共事件、有序公共事件和粘性事件,可以通过参数CommonEventPublishData的isOrdered、isSticky的字段进行设置。
-
导入模块。
import commonEventManager from '@ohos.commonEventManager'; import Base from '@ohos.base';
-
传入需要发布的事件名称和回调函数,发布事件。
// 公共事件相关信息 let options: commonEventManager.CommonEventPublishData = { code: 1, // 公共事件的初始代码 data: "initial data", // 公共事件的初始数据 }
-
传入需要发布的事件名称、需要发布的指定信息和回调函数,发布事件。
// 发布公共事件 commonEventManager.publish("custom_event", options, (err: Base.BusinessError) => { if (err) { console.error('[CommonEvent] PublishCallBack err=' + JSON.stringify(err)); } else { console.info('[CommonEvent] Publish success') } });