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