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

【报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

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

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

9***@qq.com

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

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

要回复问题请先登录注册