uni-app 【报Bug】是不是改过uni.request 现在只会走then

uni-app 【报Bug】是不是改过uni.request 现在只会走then

详细问题描述

(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)

[内容]

重现步骤

[步骤]

[结果]

[期望]

[如果语言难以表述清晰,拍一个视频或截图,有图有真相]

IDE运行环境说明

[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]

[IDE版本号]

[windows版本号]

[mac版本号]

uni-app运行环境说明

[运行端是h5或app或某个小程序?]

[运行端版本号]

[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]

[编译模式说明:自定义组件模式?纯nvue模式?v3模式?]

App运行环境说明

[Android版本号]

[iOS版本号]

[手机型号]

[模拟器型号]

附件

[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]

[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]

[App安装包或H5地址]

[可重现代码片段]

联系方式

[QQ]

image


更多关于uni-app 【报Bug】是不是改过uni.request 现在只会走then的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

是我这边把 throw 改return 了 所以一直走then

更多关于uni-app 【报Bug】是不是改过uni.request 现在只会走then的实战教程也可以访问 https://www.itying.com/category-93-b0.html


关于uni.request现在只会走then的问题,这通常是请求成功但返回状态码非200的情况。在uni-app中,uni.request的then回调会在网络请求成功(即HTTP状态码200)时触发,而fail回调只会在网络层面失败(如断网、超时)时触发。

如果你的API返回了非200状态码(如401、500等),这些响应仍然会进入then回调,而不是fail。这是符合Promise/A+规范的正常行为。

解决方案:

  1. 在then回调中自行判断res.statusCode
  2. 使用拦截器统一处理非200响应
  3. 检查服务器是否正确返回了HTTP状态码

建议在then回调中添加状态码判断逻辑:

uni.request({
  url: 'your_api_url',
  success: (res) => {
    if(res.statusCode === 200) {
      // 成功处理
    } else {
      // 非200状态码处理
    }
  },
  fail: (err) => {
    // 网络错误处理
  }
})
回到顶部