uni-app 鸿蒙下request请求abort无效

uni-app 鸿蒙下request请求abort无效

类别 信息
产品分类 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 (自己的网络请求公司内网接口模拟出来的)

更多关于uni-app 鸿蒙下request请求abort无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

28 回复

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

更多关于uni-app 鸿蒙下request请求abort无效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


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

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

我使用如下代码测试,发现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);
}); 如果与你的项目有出入,请你提供一下你的项目

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

这个问题应该是abort现在版本不会触发fail中的逻辑

回复 DCloud_UNI_yuhe: 你可以试一下下面的临时方案

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

好的 我试下

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

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

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

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

hbuilderx 4.81 已修复

回到顶部