• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 发布公共事件
2<!--Kit: Basic Services Kit-->
3<!--Subsystem: Notification-->
4<!--Owner: @michael_woo888-->
5<!--Designer: @dongqingran; @wulong158-->
6<!--Tester: @wanghong1997-->
7<!--Adviser: @huipeizi-->
8
9## 场景介绍
10
11当需要发布某个公共事件时,可以通过[publish()](../../reference/apis-basic-services-kit/js-apis-commonEventManager.md#commoneventmanagerpublish)方法发布事件。发布的公共事件可以携带数据,供订阅者解析并进行下一步处理。
12
13> **须知:**
14> 已发出的粘性公共事件后来订阅者也可以接收到,其他公共事件都需要先订阅再接收,订阅参考[公共事件订阅章节](common-event-subscription.md)。
15
16
17## 接口说明
18
19详细接口见[接口文档](../../reference/apis-basic-services-kit/js-apis-commonEventManager.md#commoneventmanagerpublish)。
20
21| 接口名                                                       | 接口描述                     |
22| ------------------------------------------------------------ | ---------------------------- |
23| publish(event:&nbsp;string,&nbsp;callback:&nbsp;AsyncCallback<void\>) | 发布公共事件。               |
24| publish(event:&nbsp;string,&nbsp;options:&nbsp;[CommonEventPublishData](../../reference/apis-basic-services-kit/js-apis-inner-commonEvent-commonEventPublishData.md),&nbsp;callback:&nbsp;AsyncCallback<void\>) | 指定发布信息并发布公共事件。 |
25
26
27## 发布不携带信息的公共事件
28
29不携带信息的公共事件,只能发布无序公共事件。
30
311. 导入模块。
32
33   ```ts
34   import { BusinessError, commonEventManager } from '@kit.BasicServicesKit';
35   import { hilog } from '@kit.PerformanceAnalysisKit';
36
37   const TAG: string = 'ProcessModel';
38   const DOMAIN_NUMBER: number = 0xFF00;
39   ```
40
412. 传入需要发布的事件名称和回调函数,发布事件。
42
43   ```ts
44   // 发布公共事件,其中的event字段需要替换为实际的事件名称。
45   commonEventManager.publish('event', (err: BusinessError) => {
46     if (err) {
47       hilog.error(DOMAIN_NUMBER, TAG, `Publish failed, code is ${JSON.stringify(err.code)}, message is ${JSON.stringify(err.message)}`);
48     } else {
49       //...
50       hilog.info(DOMAIN_NUMBER, TAG, `Publish success`);
51     }
52   });
53   ```
54
55
56## 发布携带信息的公共事件
57
58携带信息的公共事件,可以发布为无序公共事件、有序公共事件和粘性事件,可以通过参数[CommonEventPublishData](../../reference/apis-basic-services-kit/js-apis-inner-commonEvent-commonEventPublishData.md)的isOrdered、isSticky的字段进行设置。
59
601. 导入模块。
61
62   ```ts
63   import { BusinessError, commonEventManager } from '@kit.BasicServicesKit';
64   import { hilog } from '@kit.PerformanceAnalysisKit';
65
66   const TAG: string = 'ProcessModel';
67   const DOMAIN_NUMBER: number = 0xFF00;
68   ```
69
702. 构建需要发布的公共事件信息。
71
72   ```ts
73   // 公共事件相关信息
74   let options: commonEventManager.CommonEventPublishData = {
75     code: 1, // 公共事件的初始代码
76     data: 'initial data', // 公共事件的初始数据
77   };
78   ```
79
803. 传入需要发布的事件名称、需要发布的指定信息和回调函数,发布事件。
81
82   ```ts
83   // 发布公共事件,其中的event字段需要替换为实际的事件名称。
84   commonEventManager.publish('event', options, (err: BusinessError) => {
85     if (err) {
86       hilog.error(DOMAIN_NUMBER, TAG, `Failed to publish common event. Code is ${err.code}, message is ${err.message}`);
87     } else {
88       //...
89       hilog.info(DOMAIN_NUMBER, TAG, `Succeeded in publishing common event.`);
90     }
91   });
92   ```
93