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)。

下面是一些关键机制的代码示例:

  1. 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');
    
  2. 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

回到顶部