HarmonyOS 鸿蒙Next订阅者回调中如何使用类的成员?

发布于 1周前 作者 gougou168 来自 鸿蒙OS

HarmonyOS 鸿蒙Next订阅者回调中如何使用类的成员?

在页面中收到一个订阅回调,this的指代对象变成了该订阅者回调,怎么才能调用到页面上的成员变量?

cke_593.png

4 回复

试试用箭头函数

const subscribeCB = (err, data) => {
  if (err) {
    hilog.error(0, TAG, 'subscribeCB failed, code is ${err.code}, message is ${err.message}');
  } else {
    hilog.debug(0, TAG, 'subscribeCB, data=' + JSON.stringify(data));
    if (data.data != null) {
      this.host = data.data as string;
    }
  }
};<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
可以试试将this缓存给一个全局变量,然后再回调中调用属性

好的,谢谢!

在HarmonyOS鸿蒙系统中,如果你希望在Next订阅者回调中使用类的成员,需要确保回调中的方法能够访问这些成员。这通常涉及将回调方法定义为类的一部分,并使用适当的访问修饰符(如publicprivate),同时确保类实例在回调触发时仍然有效。

具体步骤如下:

  1. 定义类成员:在类中定义你需要使用的成员变量和方法。

  2. 实现回调接口:确保你的类实现了订阅者回调所需的接口。在接口方法的实现中,你可以直接访问类的成员变量和方法。

  3. 注册回调:在类的构造函数或初始化方法中,注册你的回调实例。确保使用类实例(而非局部变量)进行注册,以保持回调与类实例的关联。

  4. 处理回调:当回调触发时,由于回调方法是类的一部分,它可以直接访问类的成员。

示例代码框架:

public class MyClass implements SomeCallbackInterface {
    private String myMember;

    public MyClass() {
        // 初始化成员变量,注册回调
        myMember = "example";
        SomeService.registerCallback(this);
    }

    @Override
    public void onCallbackTriggered() {
        // 在回调中使用类成员
        System.out.println(myMember);
    }
}

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部