harmony 鸿蒙EventHub
EventHub
The EventHub module provides APIs to subscribe to, unsubscribe from, and trigger events.
NOTE
- The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version.
- The APIs of this module can be used only in the stage model.
Modules to Import
import { common } from '@kit.AbilityKit';
Usage
Before using any APIs in the EventHub, you must obtain an EventHub instance through the member variable context of the UIAbility instance.
import { UIAbility } from '@kit.AbilityKit';
export default class EntryAbility extends UIAbility {
eventFunc() {
console.log('eventFunc is called');
}
onCreate() {
this.context.eventHub.on('myEvent', this.eventFunc);
}
}
EventHub is not a global event center. Different context objects have different EventHub objects. Event subscription, unsubscription, and triggering are performed on a specific EventHub object. Therefore, EventHub cannot be used for event transmission between VMs or processes.
EventHub.on
on(event: string, callback: Function): void;
Subscribes to an event. > NOTE > > When the callback is triggered by emit, the invoker is the EventHub object. To change the direction of this in callback, use an arrow function.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.Ability.AbilityRuntime.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
event | string | Yes | Event name. |
callback | Function | Yes | Callback invoked when the event is triggered. |
Error codes
For details about the error codes, see Universal Error Codes.
ID | Error Message |
---|---|
401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
Example 1 When the callback is triggered by emit, the invoker is the EventHub object. The EventHub object does not have the value property. Therefore, the result undefined is returned.
import { UIAbility } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
export default class EntryAbility extends UIAbility {
value: number = 12;
onCreate() {
try {
this.context.eventHub.on('myEvent', this.eventFunc);
} catch (e) {
let code: number = (e as BusinessError).code;
let msg: string = (e as BusinessError).message;
console.error(`EventHub emit error, code: ${code}, msg: ${msg}`);
}
}
onForeground() {
try {
// Result
// eventFunc is called, value: undefined
this.context.eventHub.emit('myEvent');
} catch (e) {
let code: number = (e as BusinessError).code;
let msg: string = (e as BusinessError).message;
console.error(`EventHub emit error, code: ${code}, msg: ${msg}`);
}
}
eventFunc() {
console.log(`eventFunc is called, value: ${this.value}`);
}
}
Example 2 When the callback uses an arrow function, the invoker is the EntryAbility object. The EntryAbility object has the value property. Therefore, the result 12 is returned.
import { UIAbility } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
export default class EntryAbility extends UIAbility {
value: number = 12;
onCreate() {
try {
// Anonymous functions can be used to subscribe to events.
this.context.eventHub.on('myEvent', () => {
console.log(`anonymous eventFunc is called, value: ${this.value}`);
});
} catch (e) {
let code: number = (e as BusinessError).code;
let msg: string = (e as BusinessError).message;
console.error(`EventHub emit error, code: ${code}, msg: ${msg}`);
}
}
onForeground() {
try {
// Result
// anonymous eventFunc is called, value: 12
this.context.eventHub.emit('myEvent');
} catch (e) {
let code: number = (e as BusinessError).code;
let msg: string = (e as BusinessError).message;
console.error(`EventHub emit error, code: ${code}, msg: ${msg}`);
}
}
eventFunc() {
console.log(`eventFunc is called, value: ${this.value}`);
}
}
EventHub.off
off(event: string, callback?: Function): void;
Unsubscribes from an event. - If callback is specified, this API unsubscribes from the given event with the specified callback. - If callback is not specified, this API unsubscribes from the given event with all callbacks.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.Ability.AbilityRuntime.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
event | string | Yes | Event name. |
callback | Function | No | Callback for the event. If callback is unspecified, the given event with all callbacks is unsubscribed. |
Error codes
For details about the error codes, see Universal Error Codes.
ID | Error Message |
---|---|
401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
Example
import { UIAbility } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
export default class EntryAbility extends UIAbility {
onCreate() {
try {
this.context.eventHub.on('myEvent', this.eventFunc1);
this.context.eventHub.off('myEvent', this.eventFunc1); // Unsubscribe from the myEvent event with the callback eventFunc1.
this.context.eventHub.on('myEvent', this.eventFunc1);
this.context.eventHub.on('myEvent', this.eventFunc2);
this.context.eventHub.off('myEvent'); // Unsubscribe from the myEvent event with all the callbacks (eventFunc1 and eventFunc2).
} catch (e) {
let code: number = (e as BusinessError).code;
let msg: string = (e as BusinessError).message;
console.error(`EventHub emit error, code: ${code}, msg: ${msg}`);
}
}
eventFunc1() {
console.log('eventFunc1 is called');
}
eventFunc2() {
console.log('eventFunc2 is called');
}
}
EventHub.emit
emit(event: string, …args: Object[]): void;
Triggers an event.
Atomic service API: This API can be used in atomic services since API version 11.
System capability: SystemCapability.Ability.AbilityRuntime.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
event | string | Yes | Event name. |
…args | Object[] | No | Variable parameters, which are passed to the callback when the event is triggered. |
Error codes
For details about the error codes, see Universal Error Codes.
ID | Error Message |
---|---|
401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
Example
import { UIAbility } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
export default class EntryAbility extends UIAbility {
onCreate() {
this.context.eventHub.on('myEvent', this.eventFunc);
}
onDestroy() {
try {
// Result
// eventFunc is called,undefined,undefined
this.context.eventHub.emit('myEvent');
// Result
// eventFunc is called,1,undefined
this.context.eventHub.emit('myEvent', 1);
// Result
// eventFunc is called,1,2
this.context.eventHub.emit('myEvent', 1, 2);
} catch (e) {
let code: number = (e as BusinessError).code;
let msg: string = (e as BusinessError).message;
console.error(`EventHub emit error, code: ${code}, msg: ${msg}`);
}
}
eventFunc(argOne: number, argTwo: number) {
console.log(`eventFunc is called, ${argOne}, ${argTwo}`);
}
}
你可能感兴趣的鸿蒙文章
harmony 鸿蒙AbilityAccessControl
harmony 鸿蒙OH_NativeBundle_ApplicationInfo
harmony 鸿蒙OH_NativeBundle_ElementName
- 所属分类: 后端技术
- 本文标签:
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦