common-event-publish.md 2.7 KB
Newer Older
Z
zengyawen 已提交
1 2 3 4 5
# 公共事件发布


## 场景介绍

6
当需要发布某个自定义公共事件时,可以通过[publish()](../reference/apis/js-apis-commonEventManager.md#commoneventmanagerpublish)方法发布事件。发布的公共事件可以携带数据,供订阅者解析并进行下一步处理。
Z
zengyawen 已提交
7

8
> **须知:**
Z
zengyawen 已提交
9 10 11 12 13
> 已发出的粘性公共事件后来订阅者也可以接收到,其他公共事件都需要先订阅再接收,订阅参考[公共事件订阅章节](common-event-subscription.md)。


## 接口说明

14
详细接口见[接口文档](../reference/apis/js-apis-commonEventManager.md#commoneventmanagerpublish)
Z
zengyawen 已提交
15 16 17 18

| 接口名 | 接口描述 |
| -------- | -------- |
| publish(event: string, callback: AsyncCallback) | 发布公共事件。 |
F
fangJinliang1 已提交
19
| publish(event: string, options: [CommonEventPublishData](../reference/apis/js-apis-commonEventManager.md#commoneventpublishdata), callback: AsyncCallback) | 指定发布信息并发布公共事件。 |
Z
zengyawen 已提交
20 21 22 23 24 25


## 发布不携带信息的公共事件

不携带信息的公共事件,只能发布无序公共事件。

26
1. 导入模块。
Z
zengyawen 已提交
27 28
   
   ```ts
29
   import commonEventManager from '@ohos.commonEventManager';
X
xuzhihao 已提交
30
   import Base from '@ohos.base';
Z
zengyawen 已提交
31 32 33 34 35 36
   ```

2. 传入需要发布的事件名称和回调函数,发布事件。
   
   ```ts
   // 发布公共事件
X
xuzhihao 已提交
37
   commonEventManager.publish("usual.event.SCREEN_OFF", (err: Base.BusinessError) => {
Z
zengyawen 已提交
38 39 40 41 42
       if (err) {
           console.error(`[CommonEvent] PublishCallBack err=${JSON.stringify(err)}`);
       } else {
           console.info(`[CommonEvent] Publish success`);
       }
X
xuzhihao 已提交
43
   });
Z
zengyawen 已提交
44 45 46 47 48
   ```


## 发布携带信息的公共事件

F
fangJinliang1 已提交
49
携带信息的公共事件,可以发布为无序公共事件、有序公共事件和粘性事件,可以通过参数[CommonEventPublishData](../reference/apis/js-apis-commonEventManager.md#commoneventpublishdata)的isOrdered、isSticky的字段进行设置。
Z
zengyawen 已提交
50

51
1. 导入模块。
Z
zengyawen 已提交
52 53
   
   ```ts
54
   import commonEventManager from '@ohos.commonEventManager';
X
xuzhihao 已提交
55
   import Base from '@ohos.base';
Z
zengyawen 已提交
56 57 58 59 60 61
   ```

2. 传入需要发布的事件名称和回调函数,发布事件。
   
   ```ts
   // 公共事件相关信息
X
xuzhihao 已提交
62
   let options: commonEventManager.CommonEventPublishData = {
Z
zengyawen 已提交
63 64 65 66 67 68 69 70 71
       code: 1, // 公共事件的初始代码
       data: "initial data", // 公共事件的初始数据
   }
   ```

3. 传入需要发布的事件名称、需要发布的指定信息和回调函数,发布事件。
   
   ```ts
   // 发布公共事件
X
xuzhihao 已提交
72
   commonEventManager.publish("usual.event.SCREEN_OFF", options, (err: Base.BusinessError) => {
Z
zengyawen 已提交
73 74 75 76 77
       if (err) {
           console.error('[CommonEvent] PublishCallBack err=' + JSON.stringify(err));
       } else {
           console.info('[CommonEvent] Publish success')
       }
X
xuzhihao 已提交
78
   });
Z
zengyawen 已提交
79
   ```