HarmonyOS鸿蒙Next中emitter.off如何取消指定的订阅。

HarmonyOS鸿蒙Next中emitter.off如何取消指定的订阅。 请问在有多个订阅的情况下,如何取消 emitter的某一个指定的订阅?

4 回复

EventHub.off传入callback:取消指定的callback对指定事件的订阅,当该事件触发后,将不会回调该callback。

import { UIAbility } from '@kit.AbilityKit';

export default class EntryAbility extends UIAbility {
  onCreate() {
    this.context.eventHub.on('myEvent', this.eventFunc1);
    this.context.eventHub.off('myEvent', this.eventFunc1); // 取消eventFunc1对myEvent事件的订阅
    this.context.eventHub.on('myEvent', this.eventFunc1);
    this.context.eventHub.on('myEvent', this.eventFunc2);
    this.context.eventHub.off('myEvent'); // 取消eventFunc1和eventFunc2对myEvent事件的订阅
  }

  eventFunc1() {
    console.log('eventFunc1 is called');
  }

  eventFunc2() {
    console.log('eventFunc2 is called');
  }
}

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-inner-application-eventhub-V5#eventhuboff

更多关于HarmonyOS鸿蒙Next中emitter.off如何取消指定的订阅。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


多个订阅的时候,使用 emitter.off 传入callback,可以取消指定的订阅,不会取消所有的订阅

例如:

this.context.eventHub.off('myEvent', this.eventFunc1); // 取消eventFunc1对myEvent事件的订阅
this.context.eventHub.off('myEvent'); // 取消eventFunc1和eventFunc2对myEvent事件的订阅

在HarmonyOS鸿蒙Next中,emitter.off用于取消事件监听器。要取消指定的订阅,需要传递两个参数:事件名称和对应的回调函数。具体如下:

emitter.off(eventName: string, callback: Function);
  • eventName:要取消订阅的事件名称。
  • callback:之前注册的用于处理该事件的回调函数。

示例代码:

import emitter from '@ohos.events.emitter';

// 定义事件名称
const eventName = 'myEvent';

// 定义回调函数
const myCallback = (eventData: any) => {
    console.log('Event received:', eventData);
};

// 订阅事件
emitter.on(eventName, myCallback);

// 取消订阅事件
emitter.off(eventName, myCallback);

通过emitter.off并传入正确的事件名称和回调函数,可以成功取消指定的订阅。

在HarmonyOS鸿蒙Next中,emitter.off用于取消事件监听器。要取消指定的订阅,需要传入事件类型和对应的回调函数。例如:

emitter.off('eventName', callbackFunction);

其中,eventName是事件类型,callbackFunction是之前通过emitter.on注册的回调函数。调用后,该事件将不再触发指定的回调函数。

回到顶部