EventHub
EventHub模块提供了事件中心,提供订阅、取消订阅、触发事件的能力,用于线程内通信。
-
在使用eventHub的功能前,需要通过Ability实例的成员变量context获取
import Ability from '@ohos.app.ability.UIAbility'; export default class MainAbility extends Ability { func1(){ console.log('func1 is called'); } onForeground() { this.context.eventHub.on('123', this.func1); } } -
EventHub.on
订阅指定事件
on(event: string, callback: Function): void;import Ability from '@ohos.app.ability.UIAbility'; 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'); } } -
EventHub.off
取消订阅指定事件,当callback传值时,取消订阅指定的callback;未传值时,取消订阅该事件下所有callback
off(event: string, callback?: Function): void;import Ability from '@ohos.app.ability.UIAbility'; 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'); } } -
EventHub.emit
触发指定事件
emit(event: string, ...args: Object[]): void;import Ability from '@ohos.app.ability.UIAbility'; 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); } func1(a, b) { console.log('func1 is called,' + a + ',' + b); } }
Emitter
提供发送和处理进程内事件的能力,包括对持续订阅事件或单次订阅事件的处理,取消订阅事件,发送事件到事件队列,用于同一进程线程间通信。
-
emitter.on
持续订阅某个事件以及接收事件的回调处理。
let innerEvent = { eventId: 1 }; function EmitterCallback(eventData) { console.info('callback'); } emitter.on(innerEvent, EmitterCallback); -
emitter.once
单次订阅某个事件以及接收事件的回调处理,接收到回调处理后自动取消订阅。
let innerEvent = { eventId: 1 }; function EmitterCallback(eventData) { console.info('once callback'); }; emitter.once(innerEvent, EmitterCallback); -
emitter.off
取消订阅某个事件
emitter.off(1); -
emitter.emit
发送一个事件到事件队列
// data参数的值如果是嵌套类型,需要序列化成字符串传递,不支持嵌套类型 let eventData = { data: { "content": "c", "id": 1, }}; let innerEvent = { eventId: 1, // 无需指定,不生效 priority: emitter.EventPriority.HIGH }; emitter.emit(innerEvent, eventData);commonEventManager
提供了公共事件的能力,包括公共事件的权限列表,发布公共事件,订阅或取消订阅公共事件,获取或修改公共事件结果代码、结果数据等,用于进程间通信。
-
CommonEventManager.publish
-
发布公共事件
`publish(event: string, callback: AsyncCallback<void>): void`//发布公共事件回调 function publishCallBack(err) { if (err) { console.error("publish failed " + JSON.stringify(err)); } else { console.info("publish"); } } //发布公共事件 try { CommonEventManager.publish("event", publishCallBack); } catch(err) { console.error('publish failed, catch error' + JSON.stringify(err)); } -
发布公共事件指定发布信息
publish(event: string, options: CommonEventPublishData, callback: AsyncCallback<void>): void``` //公共事件相关信息 var options = { code: 0, //公共事件的初始代码 data: "initial data",//公共事件的初始数据 isOrdered: true //有序公共事件 } //发布公共事件回调 function publishCallBack(err) { if (err) { console.error("publish failed " + JSON.stringify(err)); } else { console.info("publish"); } } //发布公共事件 try { CommonEventManager.publish("event", options, publishCallBack); } catch (err) { console.error('publish failed, catch error' + JSON.stringify(err)); } ```
-
-
CommonEventManager.createSubscriber
创建订阅者
createSubscriber(subscribeInfo: CommonEventSubscribeInfo, callback: AsyncCallback<CommonEventSubscriber>): voidvar subscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作 //订阅者信息 var subscribeInfo = { events: ["event"] }; //创建订阅者回调 function createSubscriberCallBack(err, commonEventSubscriber) { if(!err) { console.info("createSubscriber"); subscriber = commonEventSubscriber; } else { console.error("createSubscriber failed " + JSON.stringify(err)); } } //创建订阅者 try { CommonEventManager.createSubscriber(subscribeInfo, createSubscriberCallBack); } catch (err) { console.error('createSubscriber failed, catch error' + JSON.stringify(err)); } -
CommonEventManager.subscribe
订阅公共事件
subscribe(subscriber: CommonEventSubscriber, callback: AsyncCallback<CommonEventData>): void//订阅者信息 var subscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作 //订阅者信息 var subscribeInfo = { events: ["event"] }; //订阅公共事件回调 function SubscribeCallBack(err, data) { if (err) { console.error("subscribe failed " + JSON.stringify(err)); } else { console.info("subscribe "); } } //创建订阅者回调 function createSubscriberCallBack(err, commonEventSubscriber) { if(!err) { console.info("createSubscriber"); subscriber = commonEventSubscriber; //订阅公共事件 try { CommonEventManager.subscribe(subscriber, SubscribeCallBack); } catch (err) { console.error("createSubscriber failed " + JSON.stringify(err)); } } else { console.error("createSubscriber failed " + JSON.stringify(err)); } } //创建订阅者 try { CommonEventManager.createSubscriber(subscribeInfo, createSubscriberCallBack); } catch (err) { console.error('createSubscriber failed, catch error' + JSON.stringify(err)); } -
CommonEventManager.unsubscribe
取消订阅公共事件
unsubscribe(subscriber: CommonEventSubscriber, callback?: AsyncCallback<void>): voidvar subscriber; //用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作 //订阅者信息 var subscribeInfo = { events: ["event"] }; //订阅公共事件回调 function subscribeCallBack(err, data) { if (err) { console.info("subscribe failed " + JSON.stringify(err)); } else { console.info("subscribe"); } } //创建订阅者回调 function createSubscriberCallBack(err, commonEventSubscriber) { if (err) { console.info("createSubscriber failed " + JSON.stringify(err)); } else { console.info("createSubscriber"); subscriber = commonEventSubscriber; //订阅公共事件 try { CommonEventManager.subscribe(subscriber, subscribeCallBack); } catch(err) { console.info("subscribe failed " + JSON.stringify(err)); } } } //取消订阅公共事件回调 function unsubscribeCallBack(err) { if (err) { console.info("unsubscribe failed " + JSON.stringify(err)); } else { console.info("unsubscribe"); } } //创建订阅者 try { CommonEventManager.createSubscriber(subscribeInfo, createSubscriberCallBack); } catch (err) { console.info("createSubscriber failed " + JSON.stringify(err)); } //取消订阅公共事件 try { CommonEventManager.unsubscribe(subscriber, unsubscribeCallBack); } catch (err) { console.info("unsubscribe failed " + JSON.stringify(err)); } -
CommonEventSubscriber
获取公共事件的结果代码
getCode(callback: AsyncCallback<number>): voidvar subscriber; //创建成功的订阅者对象 //获取有序公共事件的结果代码回调 function getCodeCallback(err, Code) { if (err) { console.error("getCode failed " + JSON.stringify(err)); } else { console.info("getCode " + JSON.stringify(Code)); } } subscriber.getCode(getCodeCallback);其他不常用函数请参数官网文档