• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.events.emitter (Emitter)
2
3本模块提供了在同一进程不同线程间,或同一进程同一线程内,发送和处理事件的能力,包括持续订阅事件、单次订阅事件、取消订阅事件,以及发送事件到事件队列的能力。
4
5> **说明:**
6>
7> 本模块首批接口从API version 7开始支持。后续版本新增接口,采用上角标单独标记接口的起始版本。
8
9## 导入模块
10
11```ts
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](#eventpriority),在订阅事件时无需指定,也不生效 |
32| callback | Callback\<[EventData](#eventdata)\> | 是   | 接收到该事件时需要执行的回调处理函数                       |
33
34**示例:**
35
36```ts
37let innerEvent: emitter.InnerEvent = {
38  eventId: 1
39};
40
41// 收到eventId为1的事件后执行回调函数
42emitter.on(innerEvent, () => {
43  console.info('callback');
44});
45```
46
47## emitter.once
48
49once(event: [InnerEvent](#innerevent), callback: Callback\<[EventData](#eventdata)\>): void
50
51单次订阅指定的事件,并在接收到该事件并执行完相应的回调函数后,自动取消订阅。
52
53**系统能力**: `SystemCapability.Notification.Emitter`
54
55**参数:**
56
57| 参数名   | 类型                                | 必填 | 说明                                                                            |
58| -------- | ----------------------------------- | ---- | ------------------------------------------------------------------------------ |
59| event    | [InnerEvent](#innerevent)           | 是   | 单次订阅的事件,其中[EventPriority](#eventpriority),在订阅事件时无需指定,也不生效 |
60| callback | Callback\<[EventData](#eventdata)\> | 是   | 接收到该事件时需要执行的回调处理函数                                             |
61
62**示例:**
63
64```ts
65let innerEvent: emitter.InnerEvent = {
66    eventId: 1
67};
68
69// 收到eventId为1的事件后执行该回调函数
70emitter.once(innerEvent, () => {
71    console.info('once callback');
72});
73```
74
75## emitter.off
76
77off(eventId: number): void
78
79取消针对该事件ID的订阅。
80
81**系统能力**: `SystemCapability.Notification.Emitter`
82
83**参数:**
84
85| 参数名  | 类型   | 必填 | 说明   |
86| ------- | ------ | ---- | ------ |
87| eventId | number | 是   | 事件ID |
88
89**示例:**
90
91```ts
92// 取消eventID为1的所有事件回调处理函数
93emitter.off(1);
94```
95
96## emitter.off<sup>10+<sup>
97
98off(eventId: number, callback: Callback\<[EventData](#eventdata)\>): void
99
100取消针对该事件ID的订阅,传入可选参数callback,并且该callback已经通过on或者once接口订阅,则取消该订阅;否则,不做任何处理。
101
102**系统能力**: `SystemCapability.Notification.Emitter`
103
104**参数:**
105
106| 参数名  | 类型   | 必填 | 说明   |
107| ------- | ------ | ---- | ------ |
108| eventId | number | 是   | 事件ID |
109| callback<sup>10+</sup> | Callback\<[EventData](#eventdata)\> | 是   | API version 10 新增取消该事件的回调处理函数。   |
110
111**示例:**
112
113```ts
114// 取消eventID为1的事件回调处理函数 emitterCallback
115// 如果该回调处理函数没有被订阅,则不做任何处理
116emitter.off(1, () => {
117  console.info('callback');
118});
119```
120
121## emitter.emit
122
123emit(event: [InnerEvent](#innerevent), data?: [EventData](#eventdata)): void
124
125发送指定的事件。
126
127**系统能力**: `SystemCapability.Notification.Emitter`
128
129**参数:**
130
131| 参数名 | 类型                      | 必填 | 说明           |
132| ------ | ------------------------- | ---- | ------------- |
133| event  | [InnerEvent](#innerevent) | 是   | 发送的事件,其中[EventPriority](#eventpriority)用于指定事件被发送的优先级 |
134| data   | [EventData](#eventdata)   | 否   | 事件携带的数据 |
135
136**示例:**
137
138```ts
139let eventData: emitter.EventData = {
140    data: {
141        "content": "c",
142        "id": 1,
143    }
144};
145
146let innerEvent: emitter.InnerEvent = {
147    eventId: 1,
148    priority: emitter.EventPriority.HIGH
149};
150
151emitter.emit(innerEvent, eventData);
152```
153
154## EventPriority
155
156用于表示事件被发送的优先级。
157
158**系统能力**:  `SystemCapability.Notification.Emitter`
159
160| 名称      | 值    | 说明                                                |
161| --------- | ---- | --------------------------------------------------- |
162| IMMEDIATE | 0    | 表示事件被立即投递。                                 |
163| HIGH      | 1    | 表示事件先于LOW优先级投递。                           |
164| LOW       | 2    | 表示事件优于IDLE优先级投递,事件的默认优先级是LOW。     |
165| IDLE      | 3    | 表示在没有其他事件的情况下,才投递该事件。             |
166
167## InnerEvent
168
169订阅或发送的事件,订阅事件时`EventPriority`不生效。
170
171**系统能力**: `SystemCapability.Notification.Emitter`
172
173| 名称     | 类型                        | 可读 | 可写 | 说明                                 |
174| -------- | ------------------------------- | ---- | ---- | ------------------------------ |
175| eventId  | number                          | 是   | 是   | 事件ID,由开发者定义用来辨别事件。 |
176| priority | [EventPriority](#eventpriority) | 是   | 是   | 事件被投递的优先级。             |
177
178## EventData
179
180发送事件时传递的数据。
181
182**系统能力**: `SystemCapability.Notification.Emitter`
183
184| 名称 | 类型           | 可读 | 可写 | 说明           |
185| ---- | ------------------ | ---- | ---- | -------------- |
186| data | [key: string]: any | 是   | 是   | 发送事件时传递的数据,数据类型支持字符串、整型和布尔型。<br> 其中字符串长度最大为10240字节。 |
187