HarmonyOS鸿蒙Next企业面试题 event是用什么来监听的方法?一发送一个消息是用什么来监听它的?(emit)
EventHub | eventHub.on(eventName, callback) |
eventHub.emit(eventName, data) |
UIAbility内、UIAbility与页面、组件间通信 | 轻量级,基于上下文(context),适用于局部范围的事件传递。 |
---|---|---|---|---|
Emitter | emitter.on(innerEvent, callback) |
emitter.emit(innerEvent, eventData) |
同线程内的事件处理 | 需要唯一eventId ,支持设置优先级(Priority)。 |
下面是一些关键机制的代码示例:
-
EventHub: 适用于UIAbility或页面内的局部通信。
// 在UIAbility或拥有context的组件中 // 订阅事件 this.context.eventHub.on('my_event', (data) => { console.info(`收到事件: ${data}`); }); // 发布事件 this.context.eventHub.emit('my_event', '这是一条消息'); // 记得在合适的时机取消订阅,避免内存泄漏 // this.context.eventHub.off('my_event');
-
Emitter: 适用于同线程内的事件处理,需要唯一
eventId
。import emitter from '[@ohos](/user/ohos).events.emitter'; // 定义事件 let innerEvent = { eventId: 1 // 需要唯一的事件ID }; // 订阅事件 emitter.on(innerEvent, (eventData) => { console.info(`收到Emitter事件: ${JSON.stringify(eventData)}`); }); // 发送事件 let eventData = { data: { message: '来自Emitter的消息' } }; emitter.emit(innerEvent, eventData);
更多关于HarmonyOS鸿蒙Next企业面试题 event是用什么来监听的方法?一发送一个消息是用什么来监听它的?(emit)的实战教程也可以访问 https://www.itying.com/category-93-b0.html