找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索本站精品资源

首页 教程频道 小程序开发 查看内容

微信小程序 wx.setStorage 缓存字典策略

作者:模板之家 2018-8-17 09:11 5561人关注

官方提供了wx.setStorage 等接口给开发者缓存数据,但是对于使用Array()来缓存字典数据似乎存在bug?在设置后并不能成功。 并没有缓存成功 投机取巧:使用数组模拟字典的效果 解决方案

官方提供了wx.setStorage 等接口给开发者缓存数据,但是对于使用Array()来缓存字典数据似乎存在bug?在设置后并不能成功。

 

				
  1.  

并没有缓存成功 

投机取巧:使用数组模拟字典的效果

解决方案如下

根据key取值 

根据key、data更新数组 

我的需求是缓存一个阅读记录的字典其数据格式如下

 

				
  1. read_record: {
  2. keys: Array(), // [小说id]
  3. datas: Array() // [章节id]
  4. }

可以根据小说id去获取最近阅读的章节的id

 

				
  1. data: {
  2. read_record: {
  3. keys: Array(),
  4. datas: Array()
  5. }
  6. },
  7. // 初始化阅读记录
  8. initReadRecord: function() {
  9. let key = 'chapter_read_record'
  10. var data = wx.getStorageSync(key)
  11. if (data) {
  12. this.data.read_record = data
  13. }
  14. },
  15. // 获取阅读记录 根据小说的id获取上次阅读的章节的id
  16. getReadRecord: function(novel_id) {
  17. let keys = this.data.read_record.keys
  18. let datas = this.data.read_record.datas
  19. let idx = keys.indexOf(novel_id)
  20. return datas[idx]
  21. },
  22. // 保存阅读记录 根据小说id、章节id保存
  23. setReadRecord: function(novel_id, chapter_id) {
  24. let key = 'chapter_read_record'
  25.  
  26. let keys = this.data.read_record.keys
  27. let datas = this.data.read_record.datas
  28.  
  29. let idx = keys.indexOf(novel_id)
  30. // 如果没有找到索引,会返回-1
  31. if (idx == -1) {
  32. keys.push(novel_id)
  33. datas.push(chapter_id)
  34. } else {
  35. datas[idx] = chapter_id
  36. }
  37.  
  38. let that = this
  39. wx.setStorage({
  40. key: key,
  41. data: that.data.read_record,
  42. })
  43. },

缓存结果



路过

雷人

握手

鲜花

鸡蛋
原作者: 模板之家 来自: 网络收集

全部回复(0)