1# @ohos.events.emitter (Emitter) 2 3本模块提供发送和处理进程内事件的能力,包括对持续订阅事件或单次订阅事件的处理,取消订阅事件,发送事件到事件队列。 4 5> **说明:** 6> 7> 本模块首批接口从API version 7开始支持。 8 9## 导入模块 10 11```javascript 12import emitter from '@ohos.events.emitter' 13``` 14 15## 权限列表 16 17无 18 19## emitter.on 20 21on(event: [InnerEvent](#innerevent), callback: Callback\<[EventData](#eventdata)\>): void 22 23持续订阅某个事件以及接收事件的回调处理。 24 25**系统能力**: SystemCapability.Notification.Emitter 26 27**参数:** 28 29| 参数名 | 类型 | 必填 | 说明 | 30| -------- | ----------------------------------- | ---- | --------------------------------------- | 31| event | [InnerEvent](#innerevent) | 是 | 持续订阅的事件,其中EventPriority不生效 | 32| callback | Callback\<[EventData](#eventdata)\> | 是 | 接收订阅事件时的回调处理 | 33 34**示例:** 35 36```javascript 37let innerEvent = { 38 eventId: 1 39}; 40function EmitterCallback(eventData) { 41 console.info('callback'); 42} 43emitter.on(innerEvent, EmitterCallback); 44``` 45 46## emitter.once 47 48once(event: [InnerEvent](#innerevent), callback: Callback\<[EventData](#eventdata)\>): void 49 50单次订阅某个事件以及接收事件的回调处理,接收到回调处理后自动取消订阅。 51 52**系统能力**: SystemCapability.Notification.Emitter 53 54**参数:** 55 56| 参数名 | 类型 | 必填 | 说明 | 57| -------- | ----------------------------------- | ---- | --------------------------------------- | 58| event | [InnerEvent](#innerevent) | 是 | 单次订阅的事件,其中EventPriority不生效 | 59| callback | Callback\<[EventData](#eventdata)\> | 是 | 接收订阅事件时的回调处理 | 60 61**示例:** 62 63```javascript 64let innerEvent = { 65 eventId: 1 66}; 67function EmitterCallback(eventData) { 68 console.info('once callback'); 69}; 70emitter.once(innerEvent, EmitterCallback); 71``` 72 73## emitter.off 74 75off(eventId: number): void 76 77取消订阅某个事件。 78 79**系统能力**: SystemCapability.Notification.Emitter 80 81**参数:** 82 83| 参数名 | 类型 | 必填 | 说明 | 84| ------- | ------ | ---- | ------ | 85| eventId | number | 是 | 事件ID | 86 87**示例:** 88 89```javascript 90emitter.off(1); 91``` 92 93## emitter.emit 94 95emit(event: InnerEvent, data?: EventData): void 96 97发送一个事件到事件队列。 98 99**系统能力**: SystemCapability.Notification.Emitter 100 101**参数:** 102 103| 参数名 | 类型 | 必填 | 说明 | 104| ------ | ------------------------- | ---- | -------------- | 105| event | [InnerEvent](#innerevent) | 是 | 发送的事件 | 106| data | [EventData](#eventdata) | 否 | 事件携带的数据 | 107 108**示例:** 109 110```javascript 111let eventData = { 112 data: { 113 "content": "c", 114 "id": 1, 115 }}; 116let innerEvent = { 117 eventId: 1, 118 priority: emitter.EventPriority.HIGH 119}; 120emitter.emit(innerEvent, eventData); 121``` 122 123## EventPriority 124 125用于表示事件被投递的优先级。 126 127**系统能力**: 以下各项对应的系统能力均为 SystemCapability.Notification.Emitter 128 129| 名称 | 值 | 说明 | 130| --------- | ---- | --------------------------------------------------- | 131| IMMEDIATE | 0 | 表示事件被立即投递。 | 132| HIGH | 1 | 表示事件先于LOW优先级投递。 | 133| LOW | 2 | 表示事件优于IDLE优先级投递,事件的默认优先级是LOW。 | 134| IDLE | 3 | 表示在没有其他事件的情况下,才投递该事件。 | 135 136## InnerEvent 137 138进程内的事件。 139 140**系统能力**: 以下各项对应的系统能力均为 SystemCapability.Notification.Emitter 141 142| 名称 | 类型 | 可读 | 可写 | 说明 | 143| -------- | ------------------------------- | ---- | ---- | ---------------------------------- | 144| eventId | number | 是 | 是 | 事件的ID,由开发者定义用来辨别事件。 | 145| priority | [EventPriority](#eventpriority) | 是 | 是 | 事件被投递的优先级。 | 146 147## EventData 148 149发送事件时传递的数据。 150 151**系统能力**: 以下各项对应的系统能力均为 SystemCapability.Notification.Emitter 152 153| 名称 | 类型 | 可读 | 可写 | 说明 | 154| ---- | ------------------ | ---- | ---- | -------------- | 155| data | [key: string]: any | 是 | 是 | 发送事件时传递的数据,数据类型支持字符串、整型和布尔型。<br> 其中字符串长度最大为10240字节。 |