HarmonyOS 利用promise封装HTTP请求指定了返回类型,then的res可以已经推断出类型catch必须声明,但catch拿不到定义的字段,如何解决

getSmsCode({ phone: this.phone, type: 1 }).then((res) => {
  this.hasSend = true
  closeToast()
  console.info("res", JSON.stringify(res))
  const result = res;
  console.log(JSON.stringify(result))
  setTimeout(() => {
    showToast({ type: "info", info: "短信发送成功" }, this)
  }, 300)
}).catch((e) => { //e 必须指定类型 ,但then的 res 不需要
  closeToast()
  console.info("错误", e)
})
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

上面方法中调用了自己使用promise封装的请求,已经告诉其返回值为Promise<responseData<T>>,then可以推断出其类型,并可以通过编辑器拿到api字段,但catch一定要声明字段如何解决,已经在request中reject指定了类型,如何才能像then一样通过编辑器提示拿到reject的字段?

HarmonyOS
2024-12-23 16:20:02
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
fox280

catch中的异常类型,可以定义成any类型。

1、可以自己强转,这种有class cast exception的风险err as base.BusinessError。

2、简单判断

if(err.code != null && err.message != null){ // xxxx }
  • 1.
分享
微博
QQ
微信
回复
2024-12-23 18:30:35
相关问题
HarmonyOS catch error问题
850浏览 • 1回复 待解决
http请求报错2300006如何解决
3976浏览 • 1回复 待解决
拿不到设备UDID怎么解决
4798浏览 • 1回复 待解决
HarmonyOS rcp通用请求Promise封装
1088浏览 • 1回复 待解决
HarmonyOS http请求封装
966浏览 • 1回复 待解决
HarmonyOS http请求封装
921浏览 • 1回复 待解决
HarmonyOS http网络请求封装Demo
918浏览 • 1回复 待解决
HarmonyOS try catch是异步执行吗?
735浏览 • 1回复 待解决
HarmonyOS POST请求,服务端拿不到数据
1563浏览 • 1回复 待解决