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

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
4 5
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。  
> 本模块接口仅可在Stage模型下使用。
ahjxliubao2's avatar
ahjxliubao2 已提交
6

W
wusongqing 已提交
7
事件中心,提供订阅、取消订阅、触发事件能力。
ahjxliubao2's avatar
ahjxliubao2 已提交
8

9 10 11
## 导入模块

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

## 使用说明

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

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


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

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

订阅指定事件。

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

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

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

Y
yuyaozhi 已提交
47
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
48
    
Y
yuyaozhi 已提交
49
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
  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 已提交
70
## EventHub.off
ahjxliubao2's avatar
ahjxliubao2 已提交
71 72 73 74 75

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

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

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

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

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

Y
yuyaozhi 已提交
85
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
86
    
Y
yuyaozhi 已提交
87
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
  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 已提交
108
## EventHub.emit
ahjxliubao2's avatar
ahjxliubao2 已提交
109 110 111 112 113

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

触发指定事件。

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

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

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

Y
yuyaozhi 已提交
123
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
124
    
Y
yuyaozhi 已提交
125
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
  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);
      }
141
      func1(a, b) {
ahjxliubao2's avatar
ahjxliubao2 已提交
142 143 144 145
          console.log("func1 is called," + a + "," + b);
      }
  }
  ```