• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 公共事件发布
2
3
4## 场景介绍
5
6当需要发布某个自定义公共事件时,可以通过[publish()](../../reference/apis-basic-services-kit/js-apis-commonEventManager.md#commoneventmanagerpublish)方法发布事件。发布的公共事件可以携带数据,供订阅者解析并进行下一步处理。
7
8> **须知:**
9> 已发出的粘性公共事件后来订阅者也可以接收到,其他公共事件都需要先订阅再接收,订阅参考[公共事件订阅章节](common-event-subscription.md)。
10
11
12## 接口说明
13
14详细接口见[接口文档](../../reference/apis-basic-services-kit/js-apis-commonEventManager.md#commoneventmanagerpublish)。
15
16| 接口名 | 接口描述 |
17| -------- | -------- |
18| publish(event: string, callback: AsyncCallback) | 发布公共事件。 |
19| publish(event: string, options: [CommonEventPublishData](../../reference/apis-basic-services-kit/js-apis-commonEventManager.md#commoneventpublishdata), callback: AsyncCallback) | 指定发布信息并发布公共事件。 |
20
21
22## 发布不携带信息的公共事件
23
24不携带信息的公共事件,只能发布无序公共事件。
25
261. 导入模块。
27
28   ```ts
29   import Base from '@ohos.base';
30   import commonEventManager from '@ohos.commonEventManager';
31
32   const TAG: string = 'ProcessModel';
33   ```
34
352. 传入需要发布的事件名称和回调函数,发布事件。
36
37   ```ts
38   // 发布公共事件,其中的event字段需要替换为实际的事件名称。
39   commonEventManager.publish('event', (err: Base.BusinessError) => {
40     if (err) {
41       console.info(`PublishCallBack err = ${JSON.stringify(err)}`);
42     } else {
43       ...
44       console.info(`Publish success`);
45     }
46   });
47   ```
48
49
50## 发布携带信息的公共事件
51
52携带信息的公共事件,可以发布为无序公共事件、有序公共事件和粘性事件,可以通过参数[CommonEventPublishData](../../reference/apis-basic-services-kit/js-apis-commonEventManager.md#commoneventpublishdata)的isOrdered、isSticky的字段进行设置。
53
541. 导入模块。
55
56   ```ts
57   import Base from '@ohos.base';
58   import commonEventManager from '@ohos.commonEventManager';
59
60   const TAG: string = 'ProcessModel';
61   ```
62
632. 构建需要发布的公共事件信息。
64
65   ```ts
66   // 公共事件相关信息
67   let options: commonEventManager.CommonEventPublishData = {
68     code: 1, // 公共事件的初始代码
69     data: 'initial data', // 公共事件的初始数据
70   };
71   ```
72
733. 传入需要发布的事件名称、需要发布的指定信息和回调函数,发布事件。
74
75   ```ts
76   // 发布公共事件,其中的event字段需要替换为实际的事件名称。
77   commonEventManager.publish('event', options, (err: Base.BusinessError) => {
78     if (err) {
79       console.error('PublishCallBack err = ' + JSON.stringify(err));
80     } else {
81       ...
82       console.info('Publish success');
83     }
84   });
85   ```
86