收藏
回答

小程序如何实现串行同步下载多个网络文件?

我的需求是 先下载完一数组的图片,然后再处理其它业务。

那么,小程序如何实现同步下载一个网络文件?

以下是我做的尝试:

我看了wx.downloadFile 的文档,我看文档说不支持promise调用。但是满足不了我的需求,它是异步下载的。

我用 async await 试了一下 。没有结果。

这是调用

that.getCacheOfOneImage(recordsObj[i].image_url).then(function(res){
            console.log(res);
          })


 getCacheOfOneImage:async function(url){
   return await new Promise(function(resolve,reject){
      wx.downloadFile({
        url: url, //仅为示例,并非真实的资源
        success (res) {
          // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
          if (res.statusCode === 200) {
            console.log("cache file ",res.tempFilePath)
          }
        }
      })
    })
    
  },
最后一次编辑于  2021-09-15
回答关注问题邀请回答
收藏

4 个回答

  • 小猪快跑
    小猪快跑
    2022-09-01

    解决了嘛,我这开始无限套娃了。。。

    2022-09-01
    有用
    回复
  • majnun
    majnun
    发表于移动端
    2021-09-15
    ئۇقامدۇ
    2021-09-15
    有用
    回复
  • C叔
    C叔
    2021-09-15
    async getCacheOfOneImage(){
       return await new Promise(function(resolve,reject){
          wx.downloadFile({
            url: url, //仅为示例,并非真实的资源
            success (res) {
              // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
              if (res.statusCode === 200) {
                resolve(res.tempFilePath)
                console.log("cache file ",res.tempFilePath)
                return
              }
                reject() //失败
            },
          fail:reject
          })
        })
        
      },
    await getCacheOfOneImage()
    


    2021-09-15
    有用
    回复 1
    • Derrick舰长
      Derrick舰长
      2021-09-15
      尝试了一下,还是异步执行的。  是小程序.js文件要事先引入其它文件么?
      2021-09-15
      回复
  • up
    up
    2021-09-14

    监听,完成后执行下一步

    https://developers.weixin.qq.com/miniprogram/dev/api/network/download/DownloadTask.onProgressUpdate.html

    2021-09-14
    有用
    回复
登录 后发表内容