9***@qq.com
9***@qq.com
  • 发布:2025-07-09 15:04
  • 更新:2025-07-16 15:22
  • 阅读:164

【报Bug】鸿蒙下request请求abort无效

分类:鸿蒙Next

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 小米 26100.4061

HBuilderX类型: 正式

HBuilderX版本号: 4.66

手机系统: HarmonyOS NEXT

手机系统版本号: HarmonyOS 5.0.1

手机厂商: 华为

手机机型: 华为mate60

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

每次进行页面切换时 abort接口 鸿蒙下无效 h5和安卓abort过的接口 再次请求会很快fail超时时间无效

预期结果:

鸿蒙下abort方法可用 每次abort过的接口再次请求还是正常15s

实际结果:

鸿蒙下abort无效 每次abort过的接口很快fail

bug描述:

1.页面跳转时将当前页面未执行的请求abort掉 安卓h5调用了abort方法都是可以执行 鸿蒙下调用了该方法无效 页面跳转了接口请求一直在执行 2.已经abort过的接口再次请求 会很快fail 设置的请求超时时间15s无效 没有abort过的接口再次请求是正常15s (自己的网络请求公司内网接口模拟出来的)

2025-07-09 15:04 负责人:无 分享
已邀请:
DCloud_UNI_yuhe

DCloud_UNI_yuhe

不跳转页面直接调用 abort 试过正常吗?只有在切换页面的时候出现吗?

  • 9***@qq.com (作者)

    不行的 做了个按钮直接abort 方法是调用了 但是接口还是一直在请求后台

    2025-07-09 15:16

  • DCloud_UNI_yuhe

    回复 9***@qq.com: 那等我看一下

    2025-07-09 15:17

DCloud_UNI_yuhe

DCloud_UNI_yuhe

我使用如下代码测试,发现abort的使用是正常的,后端延长 2s 后返回

<template>  
  <view>  
    <view>状态: {{ status }}</view>  
    <button @click="startRequest">发送请求</button>  
    <button @click="abortRequest" :disabled="!requestTask">中止请求</button>  
  </view>  
</template>  

<script lang="ts" setup>  
import { ref } from 'vue'  

const status = ref('未开始')  
let requestTask: any = null  

const startRequest = () => {  
  status.value = '请求中...'  
  requestTask = uni.request({  
    url: 'http://192.168.31.172:3001', //仅为示例,并非真实接口地址。  
    method: 'GET',  
    success: res => {  
      console.log('success', res)  
      status.value = '请求成功'  
      requestTask = null  
    },  
    fail: res => {  
      console.log('fail', res)  
      // 检查是否是因为 abort 导致的失败  
      if (status.value == '正在中止请求...') {  
        status.value = '请求已中止'  
      } else {  
        status.value = '请求失败'  
      }  
      requestTask = null  
    },  
    complete: () => {  
      console.log('complete')  
    }  
  })  
}  

const abortRequest = () => {  
  if (requestTask) {  
    requestTask.abort()  
    status.value = '正在中止请求...'  
  }  
}  
</script>  

<style></style>  

后端:

app.get("/", (req, res) => {  
  setTimeout(() => {  
    res.send("Hello World!");  
  }, 2000);  
});

如果与你的项目有出入,请你提供一下你的项目

  • 9***@qq.com (作者)

    :disabled="!requestTask" 可用去掉的把 去掉后点击按钮h5是可以直接终止的 但是鸿蒙下面还是会继续请求 过一会才会显示请求已终止 可以在鸿蒙下运行试试

    2025-07-09 15:48

  • DCloud_UNI_yuhe

    回复 9***@qq.com: 好的等我看一下这个差异

    2025-07-09 16:07

  • 9***@qq.com (作者)

    再帮忙看看这个两个问题 下面有截图

    2025-07-09 16:08

  • 9***@qq.com (作者)

    回复 DCloud_UNI_yuhe: 这个问题再帮忙看下

    2025-07-10 11:07

  • DCloud_UNI_yuhe

    回复 9***@qq.com: 我经过测试,请求是能够中止的,且没有看到你说的继续请求的情况

    2025-07-10 11:46

  • DCloud_UNI_yuhe

    回复 9***@qq.com: 这个你看到的显示问题,只是这个判断条件有差异,你可以在errmsg中根据这个进行判断

    2025-07-10 11:54

  • DCloud_UNI_yuhe

    现在存在一个fail 中 errmsg 不一致的问题,之后会修复,就能在 fail 中看到原因是 abort 了

    2025-07-10 12:05

  • 9***@qq.com (作者)

    回复 DCloud_UNI_yuhe: 鸿蒙手机上运行你的代码还是不行啊 中断请求后还是会等到超时才会中止 我把图贴下面了 中断的时候打印了开始中断

    2025-07-10 13:43

9***@qq.com

9***@qq.com (作者) - 前端前端,大爱无边

这个列子h5是可以直接取消的 鸿蒙下不行

9***@qq.com

9***@qq.com (作者) - 前端前端,大爱无边

还有个问题就是 点发送请求过几秒点击中止请求 然后再点发送请求就会很快失败 可以看下截图的红圈里的请求时间 可以多试下才会出现

  • DCloud_UNI_yuhe

    你这个请求失败是因为没有正确配置服务器吧。

    2025-07-10 11:45

  • DCloud_UNI_yuhe

    我这里的服务器是 31.172 你服务器不能也是这个 ip 吧

    2025-07-10 11:47

  • 9***@qq.com (作者)

    回复 DCloud_UNI_yuhe: 失败是调用了你这边接口这个不影响流程(模拟取消请求流程) 用我这边的服务器也是这样的 只要主动abort过 再次点击请求 在网不好的时候就会很快失败 但是没有主动abort的接口就会一直请求直到达到设置的超时时间 还有就是鸿蒙下abort方法木有效果

    2025-07-10 11:55

  • 9***@qq.com (作者)

    回复 DCloud_UNI_yuhe: 你可以多点几下 点击后过几秒中端请求 然后再次发送请求 多重复操作几次会出现很快请求失败

    2025-07-10 11:58

9***@qq.com

9***@qq.com (作者) - 前端前端,大爱无边

手机上点击按钮后过了几十秒才会出现代码打印的complete

DCloud_UNI_yuhe

DCloud_UNI_yuhe

你尝试一下这个临时解决方案:在harmony-configs的 libs 目录下,把下面的文件放在这个文件夹里面

  • 9***@qq.com (作者)

    好的 我试下

    2025-07-10 14:59

  • DCloud_UNI_yuhe

    回复 9***@qq.com: 后续还有问题可以通过 im 交流,你点击我头像可以私信我

    2025-07-10 15:12

  • 9***@qq.com (作者)

    这个方案可以的执行了abort方法

    2025-07-10 15:22

  • 9***@qq.com (作者)

    这个方案有没有其它影响啊

    2025-07-10 15:24

  • DCloud_UNI_yuhe

    回复 9***@qq.com: 这个就是基于最新的4.74 alpha 构建的

    2025-07-10 15:27

要回复问题请先登录注册