收藏
回答

数组直接打印有数据,设置到缓存后打印却为空?

//js文件中全局申明了一个变量
var category=[]
var categoryObj={}

//云函数获取商品列表
getGoodsList(){
    wx.cloud.callFunction({
      name:"category",
      data:{
        type:"get"
      }
    }).then(res=>{
      category=res.result.data
      //一些数据处理
        categoryObj[category_name]=[] //以产品分类为key把商品列表写成对象形式
        
         //一些数据处理
          categoryObj[category_name][good.id]=good //最后的格式就是{category1:[{id1:good1},{id2:good2}]}
        }
        }
      
      this.updateQty();//更新商品的数量
    })
  },   

  updateQty(){
     //这里打印出来是有数据的
    console.log(categoryObj)
    wx.setStorageSync('categoryObj', categoryObj)
    //这里就没了
    console.log(wx.getStorageSync('categoryObj'))
    //页面也没有数据
    this.setData({
      categoryObj:categoryObj
    })
  },


另外还有就是明明打印出来里面有值,但是数组长度是0

最后一次编辑于  2023-07-21
回答关注问题邀请回答
收藏

1 个回答

  • Mr.Zhao
    Mr.Zhao
    2023-07-21

    js打印的是对象快照,展开后是对象的引用,其实是没值的 少见多怪

    2023-07-21
    有用
    回复 5
    • Nathan
      Nathan
      2023-07-21
      主要问题是缓存中的对象一直是空的
      2023-07-21
      回复
    • Mr.Zhao
      Mr.Zhao
      2023-07-21回复Nathan
      为啥不空?你存进去就是空的
      2023-07-21
      回复
    • Mr.Zhao
      Mr.Zhao
      2023-07-21回复Nathan
      updateQty 没有then里面吧  updateQty先执行的,后执行的then,当然没值
      2023-07-21
      回复
    • Nathan
      Nathan
      2023-07-21回复Mr.Zhao
      放在then里试了下也是一样,你看我上面两个打印都是在updateQty里的,但是一个有key有值,一个就是只有key没有值
      2023-07-21
      回复
    • Mr.Zhao
      Mr.Zhao
      2023-07-21回复Nathan
      你打印出来的东西 就是没有值,我再看也没用  没有就是没有。 你放到then里面  你是咋放的,代码发出来看看
      2023-07-21
      回复
登录 后发表内容