官方提供了wx.setStorage 等接口给开发者缓存数据,但是对于使用Array()来缓存字典数据似乎存在bug?在设置后并不能成功。
var arr = Array() arr['key'] = 'value' wx.setStorage({ key: 'test_key', data: arr })
控制台里是这样的!
并没有缓存成功
投机取巧:使用数组模拟字典的效果
解决方案如下
根据key取值
根据key、data更新数组
我的需求是缓存一个阅读记录的字典其数据格式如下
read_record: { keys: Array(), // [小说id] datas: Array() // [章节id] }
可以根据小说id去获取最近阅读的章节的id
data: { read_record: { keys: Array(), datas: Array() } }, // 初始化阅读记录 initReadRecord: function() { let key = 'chapter_read_record' var data = wx.getStorageSync(key) if (data) { this.data.read_record = data } }, // 获取阅读记录 根据小说的id获取上次阅读的章节的id getReadRecord: function(novel_id) { let keys = this.data.read_record.keys let datas = this.data.read_record.datas let idx = keys.indexOf(novel_id) return datas[idx] }, // 保存阅读记录 根据小说id、章节id保存 setReadRecord: function(novel_id, chapter_id) { let key = 'chapter_read_record' let keys = this.data.read_record.keys let datas = this.data.read_record.datas let idx = keys.indexOf(novel_id) // 如果没有找到索引,会返回-1 if (idx == -1) { keys.push(novel_id) datas.push(chapter_id) } else { datas[idx] = chapter_id } let that = this wx.setStorage({ key: key, data: that.data.read_record, }) },
缓存结果
作者:一本大书
链接:https://www.jianshu.com/p/f002faef5fbc
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦