js-apis-emitter.md 4.8 KB
Newer Older
Z
zengsiyu 已提交
1 2
# Emitter

3 4 5 6 7
本模块提供发送和处理进程内事件的能力,包括对持续订阅事件或单次订阅事件的处理,取消订阅事件,发送事件到事件队列。

> **说明:**
>
> 本模块首批接口从API version 7开始支持。
Z
zengsiyu 已提交
8 9 10 11 12 13 14 15 16 17 18 19 20

## 导入模块

```javascript
import emitter from '@ohos.events.emitter'
```

## 权限列表



## emitter.on

21
on(event: [InnerEvent](#innerevent), callback: Callback\<[EventData](#eventdata)\>): void
Z
zengsiyu 已提交
22 23 24

持续订阅某个事件以及接收事件的回调处理。

X
xuzhihao 已提交
25 26
**系统能力**: SystemCapability.Notification.Emitter

Z
zengsiyu 已提交
27 28
**参数:**

F
fangJinliang1 已提交
29 30 31 32
| 参数名   | 类型                                | 必填 | 说明                                    |
| -------- | ----------------------------------- | ---- | --------------------------------------- |
| event    | [InnerEvent](#innerevent)           | 是   | 持续订阅的事件,其中EventPriority不生效 |
| callback | Callback\<[EventData](#eventdata)\> | 是   | 接收订阅事件时的回调处理                |
Z
zengsiyu 已提交
33 34 35 36

**示例:**

```javascript
F
fangJinliang1 已提交
37
let innerEvent = {
38
    eventId: 1
Z
zengsiyu 已提交
39
};
F
fangJinliang1 已提交
40
function EmitterCallback(eventData) {
Z
zengsiyu 已提交
41
    console.info('callback');
F
fangJinliang1 已提交
42 43
}
emitter.on(innerEvent, EmitterCallback);
Z
zengsiyu 已提交
44 45 46 47
```

## emitter.once

48
once(event: [InnerEvent](#innerevent), callback: Callback\<[EventData](#eventdata)\>): void
Z
zengsiyu 已提交
49 50 51

单次订阅某个事件以及接收事件的回调处理,接收到回调处理后自动取消订阅。

X
xuzhihao 已提交
52 53
**系统能力**: SystemCapability.Notification.Emitter

Z
zengsiyu 已提交
54 55
**参数:**

F
fangJinliang1 已提交
56 57 58 59
| 参数名   | 类型                                | 必填 | 说明                                    |
| -------- | ----------------------------------- | ---- | --------------------------------------- |
| event    | [InnerEvent](#innerevent)           | 是   | 单次订阅的事件,其中EventPriority不生效 |
| callback | Callback\<[EventData](#eventdata)\> | 是   | 接收订阅事件时的回调处理                |
Z
zengsiyu 已提交
60 61 62 63

**示例:**

```javascript
F
fangJinliang1 已提交
64
let innerEvent = {
65
    eventId: 1
Z
zengsiyu 已提交
66
};
F
fangJinliang1 已提交
67
function EmitterCallback(eventData) {
Z
zengsiyu 已提交
68 69
    console.info('once callback');
};
F
fangJinliang1 已提交
70
emitter.once(innerEvent, EmitterCallback);
Z
zengsiyu 已提交
71 72 73 74 75 76 77 78
```

## emitter.off

off(eventId: number): void

取消订阅某个事件。

X
xuzhihao 已提交
79 80
**系统能力**: SystemCapability.Notification.Emitter

Z
zengsiyu 已提交
81 82
**参数:**

83 84 85
| 参数名  | 类型   | 必填 | 说明   |
| ------- | ------ | ---- | ------ |
| eventId | number | 是   | 事件ID |
Z
zengsiyu 已提交
86 87 88 89 90 91 92 93 94 95 96 97 98

**示例:**

```javascript
emitter.off(1);
```

## emitter.emit

emit(event: InnerEvent, data?: EventData): void

发送一个事件到事件队列。

X
xuzhihao 已提交
99 100
**系统能力**: SystemCapability.Notification.Emitter

Z
zengsiyu 已提交
101 102 103 104
**参数:**

| 参数名 | 类型                      | 必填 | 说明           |
| ------ | ------------------------- | ---- | -------------- |
105 106
| event  | [InnerEvent](#innerevent) | 是   | 发送的事件     |
| data   | [EventData](#eventdata)   | 否   | 事件携带的数据 |
Z
zengsiyu 已提交
107 108 109 110

**示例:**

```javascript
F
fangJinliang1 已提交
111
let eventData = {
Z
zengsiyu 已提交
112
    data: {
113 114
        "content": "c",
        "id": 1,
Z
zengsiyu 已提交
115
    }};
F
fangJinliang1 已提交
116
let innerEvent = {
117
    eventId: 1,
Z
zengsiyu 已提交
118 119 120 121 122
    priority: emitter.EventPriority.HIGH
};
emitter.emit(innerEvent, eventData);
```

F
fangJinliang1 已提交
123 124 125 126 127 128 129 130 131 132 133 134 135
## EventPriority

用于表示事件被投递的优先级。

**系统能力**:  以下各项对应的系统能力均为 SystemCapability.Notification.Emitter

| 名称      | 值   | 说明                                                |
| --------- | ---- | --------------------------------------------------- |
| IMMEDIATE | 0    | 表示事件被立即投递。                                |
| HIGH      | 1    | 表示事件先于LOW优先级投递。                         |
| LOW       | 2    | 表示事件优于IDLE优先级投递,事件的默认优先级是LOW。 |
| IDLE      | 3    | 表示在没有其他事件的情况下,才投递该事件。          |

Z
zengsiyu 已提交
136 137 138 139
## InnerEvent

进程内的事件。

X
xuzhihao 已提交
140 141
**系统能力**: 以下各项对应的系统能力均为 SystemCapability.Notification.Emitter

Z
zengsiyu 已提交
142 143
| 名称     | 参数类型                        | 可读 | 可写 | 说明                               |
| -------- | ------------------------------- | ---- | ---- | ---------------------------------- |
X
xuzhihao 已提交
144 145
| eventId  | number                          | 是   | 是   | 事件的ID,由开发者定义用来辨别事件。 |
| priority | [EventPriority](#eventpriority) | 是   | 是   | 事件被投递的优先级。         |
Z
zengsiyu 已提交
146 147 148 149 150

## EventData

发送事件时传递的数据。

X
xuzhihao 已提交
151 152
**系统能力**: 以下各项对应的系统能力均为 SystemCapability.Notification.Emitter

Z
zengsiyu 已提交
153 154
| 名称 | 参数类型           | 可读 | 可写 | 说明           |
| ---- | ------------------ | ---- | ---- | -------------- |
X
xuzhihao 已提交
155
| data | [key: string]: any | 是   | 是   | 发送事件时传递的数据,数据类型支持字符串、整型和布尔型。 |