收藏
回答

小程序缓存存取的时候数据更新不及时?

我在代码上下文中有一个存入缓存的步骤:

... 
examInfo.signInfo = '123';//res.data.mcSign;//假设当前对象的signInfo属性值为123
console.log(examInfo);//输出{...signInfo:123}
wx.setStorageSync('mcLiftInfo', examInfo);//写入缓存mcLiftInfo对象
console.log(wx.getStorageSync('mcLiftInfo'));//能够正常获取缓存数据,{...signInfo:123}

但是在开发工具调试器上,storage中,发现当前缓存的字段mcLiftInfo中signInfo属性并没有更新赋值。然后在销毁页面的钩子函数中,获取缓存信息mcLiftInfo中同样没有signInfo属性——这就导致了后续流程出现问题

问:如何能够避免这种情况?让缓存在写入的时候能够实时更新,保证在获取缓存的时候,数据都是最新的?

补充截图:

(1)//前文代码片段在控制台的输出效果,会发现缓存的mcLiftInfo对象中signInfo是已经成功赋值了:

2//是控制台storage工具中的信息截图,mcLiftInfo中并没有signInfo属性:



最后一次编辑于  2022-04-28
回答关注问题邀请回答
收藏

1 个回答

  • null
    null
    2022-04-28

    目前已经排查到原因了,应该是缓存的mcLiftInfo对象在上下文中的某个地方闭包了——我在存入缓存的地方把key换成mcLiftInfoNew之后,在控制台发现缓存是更新了的也就是说mcLiftInfo这个key指向的缓存对象被某个地方给‘挟持’了,修改赋值受影响了。还得重新理一次上下文


    2022-04-28
    有用
    回复
登录 后发表内容