uni-app的 uni.downloadFile 在下载文件时突然中断会造成 success、fail、complete 不触发
uni-app的 uni.downloadFile 在下载文件时突然中断会造成 success、fail、complete 不触发
项目 | 信息 |
---|---|
产品分类 | uniapp/App |
PC开发环境操作系统 | Windows |
PC开发环境操作系统版本号 | 11 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 4.45 |
手机系统 | Android |
手机系统版本号 | Android 9.0 |
手机厂商 | 模拟器 |
手机机型 | 雷电模拟器 |
页面类型 | vue |
vue版本 | vue3 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
示例代码:
onLoad(() => {
console.log("开始下载了");
let task = uni.downloadFile({
url: "",
success: (res) => {
console.log('downloadFile success, res is', res)
},
fail: (err) => {
console.log('downloadFile fail, err is:', err)
},
complete: (res) => {
console.log('downloadFile complete, res is:', res)
}
})
task.onProgressUpdate((res) => {
if (res.progress > 10) {
task.abort()
}
})
})
操作步骤:
onLoad(() => {
console.log("开始下载了");
let task = uni.downloadFile({
url: "",
success: (res) => {
console.log('downloadFile success, res is', res)
},
fail: (err) => {
console.log('downloadFile fail, err is:', err)
},
complete: (res) => {
console.log('downloadFile complete, res is:', res)
}
})
task.onProgressUpdate((res) => {
if (res.progress > 10) {
task.abort()
}
})
})
预期结果:
中途打断应该有回调的
实际结果:
没有回调
bug描述:
uniappx 的 uni.downloadFile 在下载文件时突然中断会造成 success、fail、complete 不触发
更多关于uni-app的 uni.downloadFile 在下载文件时突然中断会造成 success、fail、complete 不触发的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app的 uni.downloadFile 在下载文件时突然中断会造成 success、fail、complete 不触发的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个已知的uni.downloadFile在中断时回调不触发的问题。在当前的实现中,当调用task.abort()方法主动中断下载时,确实不会触发success/fail/complete回调函数。
针对这个问题的临时解决方案是:
- 在调用abort()后手动处理中断逻辑
- 使用try-catch包裹可能中断的操作
- 通过onProgressUpdate回调自行判断下载状态
示例修改代码:
let isAborted = false;
task.onProgressUpdate((res) => {
if (res.progress > 10 && !isAborted) {
isAborted = true;
task.abort();
console.log('下载已手动中断');
// 这里执行中断后的处理逻辑
}
});