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

- 发布:2025-07-09 15:04
- 更新:2025-07-09 16:07
- 阅读:39
产品分类: 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 (作者)
不行的 做了个按钮直接abort 方法是调用了 但是接口还是一直在请求后台
2025-07-09 15:16
DCloud_UNI_yuhe
回复 9***@qq.com: 那等我看一下
2025-07-09 15:17