收藏
回答

微信小游戏缓存setStorageSync多次存储仅存储第一次为什么?

基础库: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的数据错误,为第一次点击后更新的数据

已经尝试的解决方案:

  1. 使用queue/Promise等功能顺序写入,防止因快速写入导致的写入错误——无效
  2. 使用setTimeout功能在写入第一次后等待100ms再写入——无效

求求各位大佬救救孩子吧

(某CHat已经放弃我了)

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

2 个回答

  • Lucifer.
    Lucifer.
    2023-04-09

    已解决:

    根据调试发现,wx.setStorageSync可以保存字符串数据、列表等,但是再次使用wx.setStorageSync更新时对于字符串数据可以正常更新,但列表数据不会更新,如果需要对数据进行保存,建议格式化数据为字符串后再进行保存操作

    2023-04-09
    有用 1
    回复
  • 工号 9527
    工号 9527
    2023-04-04

    请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

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