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: string, callback: AsyncCallback<void\>) | 发布公共事件。 | 24| publish(event: string, options: [CommonEventPublishData](../../reference/apis-basic-services-kit/js-apis-inner-commonEvent-commonEventPublishData.md), callback: 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