收藏
回答

在云开发批量下载中为什么不能插入数组数据?

var that = this
    var arr = []
    type.get().then(res=>{
      var list = res.data
      for(var i in list){
        for(var j in list[i].menu){
          wx.cloud.downloadFile({
            fileID:list[i].menu[j].image
          }).then(res=>{     
            // arr.push(res.tempFilePath)            
            list[i].menu[j].image = res.tempFilePath   
            // arr可以存入所有的临时路径,但是为什么不能往list插入临时路径?            
            that.setData({
              list:list
            })            
          })
        }
      }
    })

思路:将数组数据中的图片路径,通过云开发下载api,从云数据库路径(cloud://xxx)修改为临时路径

问题:临时路径可以push进arr数组,却不能插入list数组。请问应该怎么处理?大佬请赐教。。。

回答关注问题邀请回答
收藏

1 个回答

  • 金煜峰
    金煜峰
    2019-12-29

    异步的问题,.then 执行的时候上面的循环早就执行完了,所以 i 和 j 都是最后一个值,而 push 就没有影响

    把 for 循环里的 var 改成 let 应该就可以,let 会进行一个封装,让每一次循环都有一个独立的 i 和 j

    2019-12-29
    有用 1
    回复 1
    • 拎包哥
      拎包哥
      2019-12-29
      谢谢峰哥,真的可以了!
      2019-12-29
      回复
登录 后发表内容
问题标签