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