每次进行页面切换时 abort接口 鸿蒙下无效 h5和安卓abort过的接口 再次请求会很快fail超时时间无效
 
                                        
                                    
                                    - 发布:2025-07-09 15:04
- 更新:2025-09-22 19:07
- 阅读:241
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: 小米 26100.4061
HBuilderX类型: 正式
HBuilderX版本号: 4.66
手机系统: HarmonyOS NEXT
手机系统版本号: HarmonyOS 5.0.1
手机厂商: 华为
手机机型: 华为mate60
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
操作步骤:
                                    
                                         
                                
                                                                                                预期结果:
                                    
                                    
                                        鸿蒙下abort方法可用  每次abort过的接口再次请求还是正常15s
                                     
                                
                                                                                                鸿蒙下abort方法可用 每次abort过的接口再次请求还是正常15s
实际结果:
                                    
                                    
                                        鸿蒙下abort无效  每次abort过的接口很快fail
                                     
                                
                                                            鸿蒙下abort无效 每次abort过的接口很快fail
bug描述:
1.页面跳转时将当前页面未执行的请求abort掉 安卓h5调用了abort方法都是可以执行 鸿蒙下调用了该方法无效 页面跳转了接口请求一直在执行 2.已经abort过的接口再次请求 会很快fail 设置的请求超时时间15s无效 没有abort过的接口再次请求是正常15s (自己的网络请求公司内网接口模拟出来的)
 
                                                                    
                                                                我使用如下代码测试,发现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 
- 
                                                  
- 
                                                  
- 
                                                  
- 
                                                  
- 
                                                  
- 
                                                  
- 
                                                  9***@qq.com (作者) 回复 DCloud_UNI_yuhe: 鸿蒙手机上运行你的代码还是不行啊 中断请求后还是会等到超时才会中止 我把图贴下面了 中断的时候打印了开始中断 2025-07-10 13:43 
 
                                                                    
                                                                9***@qq.com (作者) - 前端前端,大爱无边
还有个问题就是 点发送请求过几秒点击中止请求 然后再点发送请求就会很快失败 可以看下截图的红圈里的请求时间 可以多试下才会出现
- 
                                                  
- 
                                                  
- 
                                                  9***@qq.com (作者) 回复 DCloud_UNI_yuhe: 失败是调用了你这边接口这个不影响流程(模拟取消请求流程) 用我这边的服务器也是这样的 只要主动abort过 再次点击请求 在网不好的时候就会很快失败 但是没有主动abort的接口就会一直请求直到达到设置的超时时间 还有就是鸿蒙下abort方法木有效果 2025-07-10 11:55 
- 
                                                  
 
             
             
             
			



 
            
9***@qq.com (作者)
不行的 做了个按钮直接abort 方法是调用了 但是接口还是一直在请求后台
2025-07-09 15:16
DCloud_UNI_yuhe
回复 9***@qq.com: 那等我看一下
2025-07-09 15:17