HarmonyOS 鸿蒙Next中怎么实现自定义接口

HarmonyOS 鸿蒙Next中怎么实现自定义接口

数据的返回接口

export interface OnRequestSuccessListener<T> {
   onSuccess(data: T): void
}

我在模拟个接口请求

public getCodeHttp(phone: string, listener: OnRequestSuccessListener<string> | null) {
  let httpRequest = http.createHttp()
  let promise = httpRequest.request('https://lystorage-cn.linkintec.cn/api/user-device/common/send/sms/code',{
    method: http.RequestMethod.POST,
    header:{'Content-Type':'application/json'},
    extraData:{
      "phone": phone,
    }
  })
  promise.then((data) =>{
    console.log(data.result.toString())
  })
}

我在界面里,应该怎么实现这方法。

getCodeHttp(): void {
  HttpComWrapper.getInstance().getCodeHttp(this.nameStr, s => { // 这里报错了,这里应该怎么写?? 还是这种理解就不对
  });
}

更多关于HarmonyOS 鸿蒙Next中怎么实现自定义接口的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS Next中实现自定义接口需要使用TypeScript/ArkTS语言。具体步骤:

  1. 创建ets文件定义接口
  2. 使用interface关键字声明接口
  3. 在组件中实现接口

示例代码:

// IMyInterface.ets
interface IMyInterface {
  method1(): void;
  method2(param: string): number;
}

// MyComponent.ets
class MyComponent implements IMyInterface {
  method1() {
    // 实现
  }
  
  method2(param: string) {
    return param.length;
  }
}

更多关于HarmonyOS 鸿蒙Next中怎么实现自定义接口的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中实现自定义接口回调的正确方式如下:

  1. 首先确保你的接口定义是正确的TypeScript语法:
export interface OnRequestSuccessListener<T> {
  onSuccess(data: T): void;
}
  1. 修改你的HTTP请求方法,正确处理回调:
public getCodeHttp(phone: string, listener: OnRequestSuccessListener<string> | null) {
  let httpRequest = http.createHttp();
  let promise = httpRequest.request('https://example.com/api', {
    method: http.RequestMethod.POST,
    header: {'Content-Type': 'application/json'},
    extraData: {"phone": phone}
  });
  
  promise.then((data) => {
    if (listener) {
      listener.onSuccess(data.result.toString());
    }
  }).catch((error) => {
    console.error("Request failed:", error);
  });
}
  1. 在调用时正确实现回调接口:
getCodeHttp(): void {
  const listener: OnRequestSuccessListener<string> = {
    onSuccess: (data: string) => {
      // 处理成功返回的数据
      console.log("Received data:", data);
    }
  };
  
  HttpComWrapper.getInstance().getCodeHttp(this.nameStr, listener);
}

注意在ArkTS/TypeScript中,回调函数的语法是使用对象字面量实现接口,而不是Java中的lambda表达式。这种方式更符合TypeScript的类型系统。

回到顶部