基础库:2.20.1,windows系统
各位大佬好。我在写一个功能,当用户点击按钮后,程序会将用户更新的信息写入到缓存'index_home'键中,但当第二次点击时显示写入的是第一次数据,重启后依然为第一次数据,后续的数据全部无法写入:
该功能中有两个类,第一个类为 state类,用于用户的输入UI等功能,第二个类为databus类,这个类负责维护全局状态。state类中当用户点击更新后会触发update函数,这个函数将更新databus.index_home的数据,这个数据是一个列表(如:['index','1','2','3']),update在更新完databus.index_home数据后会调用databus.update_index_home函数,这个函数会将databus.index_home中的数据使用 wx.setStroageSync('key',this.index_home)导入更新的数据到缓存中:如下
现在出现的问题是:
当用户第一次点击时:数据正常更新,缓存中的数据也正常更新
当用户第二次点击时:this.index_home中的数据正常更新,但是上图中tmp1的数据错误,为第一次点击后更新的数据
已经尝试的解决方案:
- 使用queue/Promise等功能顺序写入,防止因快速写入导致的写入错误——无效
- 使用setTimeout功能在写入第一次后等待100ms再写入——无效
求求各位大佬救救孩子吧
(某CHat已经放弃我了)
已解决:
根据调试发现,wx.setStorageSync可以保存字符串数据、列表等,但是再次使用wx.setStorageSync更新时对于字符串数据可以正常更新,但列表数据不会更新,如果需要对数据进行保存,建议格式化数据为字符串后再进行保存操作
请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。