在云开发批量下载中为什么不能插入数组数据?
发布于 8 年前 作者 khe 8343 次浏览 来自 官方Issues
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 回复

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

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

回到顶部