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<void\>) | 发布公共事件。 | 19| publish(event: string, options: [CommonEventPublishData](../../reference/apis-basic-services-kit/js-apis-inner-commonEvent-commonEventPublishData.md), callback: AsyncCallback<void\>) | 指定发布信息并发布公共事件。 | 20 21 22## 发布不携带信息的公共事件 23 24不携带信息的公共事件,只能发布无序公共事件。 25 261. 导入模块。 27 28 ```ts 29 import { BusinessError, commonEventManager } from '@kit.BasicServicesKit'; 30 import { hilog } from '@kit.PerformanceAnalysisKit'; 31 32 const TAG: string = 'ProcessModel'; 33 const DOMAIN_NUMBER: number = 0xFF00; 34 ``` 35 362. 传入需要发布的事件名称和回调函数,发布事件。 37 38 ```ts 39 // 发布公共事件,其中的event字段需要替换为实际的事件名称。 40 commonEventManager.publish('event', (err: BusinessError) => { 41 if (err) { 42 hilog.error(DOMAIN_NUMBER, TAG, `Publish failed, code is ${JSON.stringify(err.code)}, message is ${JSON.stringify(err.message)}`); 43 } else { 44 //... 45 hilog.info(DOMAIN_NUMBER, TAG, `Publish success`); 46 } 47 }); 48 ``` 49 50 51## 发布携带信息的公共事件 52 53携带信息的公共事件,可以发布为无序公共事件、有序公共事件和粘性事件,可以通过参数[CommonEventPublishData](../../reference/apis-basic-services-kit/js-apis-inner-commonEvent-commonEventPublishData.md)的isOrdered、isSticky的字段进行设置。 54 551. 导入模块。 56 57 ```ts 58 import { BusinessError, commonEventManager } from '@kit.BasicServicesKit'; 59 import { hilog } from '@kit.PerformanceAnalysisKit'; 60 61 const TAG: string = 'ProcessModel'; 62 const DOMAIN_NUMBER: number = 0xFF00; 63 ``` 64 652. 构建需要发布的公共事件信息。 66 67 ```ts 68 // 公共事件相关信息 69 let options: commonEventManager.CommonEventPublishData = { 70 code: 1, // 公共事件的初始代码 71 data: 'initial data', // 公共事件的初始数据 72 }; 73 ``` 74 753. 传入需要发布的事件名称、需要发布的指定信息和回调函数,发布事件。 76 77 ```ts 78 // 发布公共事件,其中的event字段需要替换为实际的事件名称。 79 commonEventManager.publish('event', options, (err: BusinessError) => { 80 if (err) { 81 hilog.error(DOMAIN_NUMBER, TAG, 'PublishCallBack err = ' + JSON.stringify(err)); 82 } else { 83 //... 84 hilog.info(DOMAIN_NUMBER, TAG, 'Publish success'); 85 } 86 }); 87 ``` 88