• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# EventHub
2
3> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明**
4>
5> 本模块首批接口从API version 9开始支持。API 9当前为Canary版本,仅供使用,不保证接口可稳定调用。
6
7
8事件中心,提供订阅、取消订阅、触发事件能力。
9
10
11## 导入模块
12
13```js
14import Ability from '@ohos.application.Ability'
15```
16
17## 使用说明
18
19
20​在使用eventHub的功能前,需要通过Ability实例的成员变量context获取。
21
22
23
24```js
25import Ability from '@ohos.application.Ability'
26export default class MainAbility extends Ability {
27    onForeground() {
28        this.context.eventHub.on("123", this.func1);
29    }
30}
31```
32
33
34## EventHub.on
35
36on(event: string, callback: Function): void;
37
38订阅指定事件。
39
40**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
41
42**参数:**
43
44  | 参数名 | 类型 | 必填 | 说明 |
45  | -------- | -------- | -------- | -------- |
46  | event | string | 是 | 事件名称。 |
47  | callback | Function | 是 | 事件回调,事件触发后运行。 |
48
49**示例:**
50
51  ```js
52  import Ability from '@ohos.application.Ability'
53
54  export default class MainAbility extends Ability {
55      onForeground() {
56          this.context.eventHub.on("123", this.func1);
57          this.context.eventHub.on("123", () => {
58              console.log("call anonymous func 1");
59          });
60          // 结果:
61          // func1 is called
62          // call anonymous func 1
63          this.context.eventHub.emit("123");
64      }
65      func1() {
66          console.log("func1 is called");
67      }
68  }
69  ```
70
71
72## EventHub.off
73
74off(event: string, callback?: Function): void;
75
76取消订阅指定事件。当callback传值时,取消订阅指定的callback;未传值时,取消订阅该事件下所有callback。
77
78**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
79
80**参数:**
81
82  | 参数名 | 类型 | 必填 | 说明 |
83  | -------- | -------- | -------- | -------- |
84  | event | string | 是 | 事件名称。 |
85  | callback | Function | 否 | 事件回调。如果不传callback,则取消订阅该事件下所有callback。 |
86
87**示例:**
88
89  ```js
90  import Ability from '@ohos.application.Ability'
91
92  export default class MainAbility extends Ability {
93      onForeground() {
94          this.context.eventHub.on("123", this.func1);
95          this.context.eventHub.off("123", this.func1); //取消订阅func1
96          this.context.eventHub.on("123", this.func1);
97          this.context.eventHub.on("123", this.func2);
98          this.context.eventHub.off("123");  //取消订阅func1和func2
99      }
100      func1() {
101          console.log("func1 is called");
102      }
103      func2() {
104          console.log("func2 is called");
105      }
106  }
107  ```
108
109
110## EventHub.emit
111
112emit(event: string, ...args: Object[]): void;
113
114触发指定事件。
115
116**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
117
118**参数:**
119
120  | 参数名 | 类型 | 必填 | 说明 |
121  | -------- | -------- | -------- | -------- |
122  | event | string | 是 | 事件名称。 |
123  | ...args | Object[] | 是 | 可变参数,事件触发时,传递给回调函数的参数。 |
124
125**示例:**
126
127  ```js
128  import Ability from '@ohos.application.Ability'
129
130  export default class MainAbility extends Ability {
131      onForeground() {
132          this.context.eventHub.on("123", this.func1);
133          // 结果:
134          // func1 is called,undefined,undefined
135          this.context.eventHub.emit("123");
136          // 结果:
137          // func1 is called,1,undefined
138          this.context.eventHub.emit("123", 1);
139          // 结果:
140          // func1 is called,1,2
141          this.context.eventHub.emit("123", 1, 2);
142      }
143      func1(a, b) {
144          console.log("func1 is called," + a + "," + b);
145      }
146  }
147  ```
148