js-apis-eventhub.md 3.8 KB
Newer Older
ahjxliubao2's avatar
ahjxliubao2 已提交
1 2
# EventHub

Y
yuyaozhi 已提交
3 4
EventHub模块提供了事件中心,提供订阅、取消订阅、触发事件的能力。

Y
yuyaozhi 已提交
5 6
> **说明:**
> 
7 8
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。  
> 本模块接口仅可在Stage模型下使用。
ahjxliubao2's avatar
ahjxliubao2 已提交
9

10 11 12
## 导入模块

```js
Y
yuyaozhi 已提交
13
import Ability from '@ohos.application.Ability'
14
```
ahjxliubao2's avatar
ahjxliubao2 已提交
15 16 17 18 19

## 使用说明

​在使用eventHub的功能前,需要通过Ability实例的成员变量context获取。

Y
yuyaozhi 已提交
20
```js
ahjxliubao2's avatar
ahjxliubao2 已提交
21 22
import Ability from '@ohos.application.Ability'
export default class MainAbility extends Ability {
Y
yuyaozhi 已提交
23 24 25
    func1(){
        console.log("func1 is called");
    }
ahjxliubao2's avatar
ahjxliubao2 已提交
26 27 28 29 30 31 32
    onForeground() {
        this.context.eventHub.on("123", this.func1);
    }
}
```


Y
yuyaozhi 已提交
33
## EventHub.on
ahjxliubao2's avatar
ahjxliubao2 已提交
34 35 36 37 38

on(event: string, callback: Function): void;

订阅指定事件。

Y
yuyaozhi 已提交
39
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
ahjxliubao2's avatar
ahjxliubao2 已提交
40

Y
yuyaozhi 已提交
41
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
42

Y
yuyaozhi 已提交
43
  | 参数名 | 类型 | 必填 | 说明 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
44 45 46 47
  | -------- | -------- | -------- | -------- |
  | event | string | 是 | 事件名称。 | 
  | callback | Function | 是 | 事件回调,事件触发后运行。 | 

Y
yuyaozhi 已提交
48
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
49
    
Y
yuyaozhi 已提交
50
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
  import Ability from '@ohos.application.Ability'
  
  export default class MainAbility extends Ability {
      onForeground() {
          this.context.eventHub.on("123", this.func1);
          this.context.eventHub.on("123", () => {
              console.log("call anonymous func 1");
          });
          // 结果:
          // func1 is called
          // call anonymous func 1
          this.context.eventHub.emit("123"); 
      }
      func1() {
          console.log("func1 is called");
      }
  }
  ```


Y
yuyaozhi 已提交
71
## EventHub.off
ahjxliubao2's avatar
ahjxliubao2 已提交
72 73 74 75 76

off(event: string, callback?: Function): void;

取消订阅指定事件。当callback传值时,取消订阅指定的callback;未传值时,取消订阅该事件下所有callback。

Y
yuyaozhi 已提交
77
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
ahjxliubao2's avatar
ahjxliubao2 已提交
78

Y
yuyaozhi 已提交
79
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
80

Y
yuyaozhi 已提交
81
  | 参数名 | 类型 | 必填 | 说明 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
82 83 84 85
  | -------- | -------- | -------- | -------- |
  | event | string | 是 | 事件名称。 | 
  | callback | Function | 否 | 事件回调。如果不传callback,则取消订阅该事件下所有callback。 | 

Y
yuyaozhi 已提交
86
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
87
    
Y
yuyaozhi 已提交
88
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
  import Ability from '@ohos.application.Ability'
  
  export default class MainAbility extends Ability {
      onForeground() {
          this.context.eventHub.on("123", this.func1);
          this.context.eventHub.off("123", this.func1); //取消订阅func1
          this.context.eventHub.on("123", this.func1);
          this.context.eventHub.on("123", this.func2);
          this.context.eventHub.off("123");  //取消订阅func1和func2
      }
      func1() {
          console.log("func1 is called");
      }
      func2() {
          console.log("func2 is called");
      }
  }
  ```


Y
yuyaozhi 已提交
109
## EventHub.emit
ahjxliubao2's avatar
ahjxliubao2 已提交
110 111 112 113 114

emit(event: string, ...args: Object[]): void;

触发指定事件。

Y
yuyaozhi 已提交
115
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
ahjxliubao2's avatar
ahjxliubao2 已提交
116

Y
yuyaozhi 已提交
117
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
118

Y
yuyaozhi 已提交
119
  | 参数名 | 类型 | 必填 | 说明 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
120 121 122 123
  | -------- | -------- | -------- | -------- |
  | event | string | 是 | 事件名称。 | 
  | ...args | Object[] | 是 | 可变参数,事件触发时,传递给回调函数的参数。 | 

Y
yuyaozhi 已提交
124
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
125
    
Y
yuyaozhi 已提交
126
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
  import Ability from '@ohos.application.Ability'
  
  export default class MainAbility extends Ability {
      onForeground() {
          this.context.eventHub.on("123", this.func1);
          // 结果:
          // func1 is called,undefined,undefined
          this.context.eventHub.emit("123");
          // 结果:
          // func1 is called,1,undefined
          this.context.eventHub.emit("123", 1);
          // 结果:
          // func1 is called,1,2
          this.context.eventHub.emit("123", 1, 2);
      }
142
      func1(a, b) {
ahjxliubao2's avatar
ahjxliubao2 已提交
143 144 145 146
          console.log("func1 is called," + a + "," + b);
      }
  }
  ```