uni-app中 uni.downloadFile 的 onProgressUpdate 方法会提前触发 uni.showLoading

uni-app中 uni.downloadFile 的 onProgressUpdate 方法会提前触发 uni.showLoading

详细问题描述

(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)

重现步骤

我已经提供附件

[步骤]

[结果]

[期望]

[如果语言难以表述清晰,拍一个视频或截图,有图有真相]

IDE运行环境说明

[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]

[IDE版本号]

[windows版本号]

[mac版本号]

uni-app运行环境说明

[运行端是h5或app或某个小程序?]
app
[运行端版本号]
编译器版本:2.0.1
[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]
HBuilderX创建的
[编译模式是老模板模式还是新的自定义组件模式?]
当前项目编译模式:自定义组件模式

App运行环境说明

[Android版本号]
8.0.0
[iOS版本号]

[手机型号]
小米 Mix 2
[模拟器型号]

附件

[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]

[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]

[App安装包或H5地址]

[可重现代码片段]
我已提供附件

联系方式

[QQ]
1741219625


类别 信息
IDE HBuilderX
版本号 编译器版本:2.0.1
项目创建 HBuilderX创建的

更多关于uni-app中 uni.downloadFile 的 onProgressUpdate 方法会提前触发 uni.showLoading的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

不是bug,HBuilderX控制台日志传输有延迟。实际上已经100%了。

更多关于uni-app中 uni.downloadFile 的 onProgressUpdate 方法会提前触发 uni.showLoading的实战教程也可以访问 https://www.itying.com/category-93-b0.html


好的 谢谢

牛比!!!的确,我搞了很久很久! 就是已经100了,然后控制台没反应

关于uni.downloadFile的onProgressUpdate提前触发showLoading的问题,这是一个常见的异步时序问题。根据你提供的信息,建议检查以下几点:

  1. 确保showLoading是在downloadFile的回调中调用,而不是在onProgressUpdate里直接调用

  2. 推荐使用Promise封装下载逻辑:

const downloadWithLoading = async (url) => {
  uni.showLoading({title: '下载中'})
  try {
    const res = await new Promise((resolve, reject) => {
      const task = uni.downloadFile({
        url,
        success: resolve,
        fail: reject
      })
      task.onProgressUpdate((res) => {
        console.log('进度', res.progress)
      })
    })
    // 下载完成处理
  } finally {
    uni.hideLoading()
  }
}
回到顶部