官方提供了wx.setStorage 等接口給開發(fā)者緩存數(shù)據(jù),但是對于使用Array()來緩存字典數(shù)據(jù)似乎存在bug?在設(shè)置后并不能成功。
-

并沒有緩存成功
投機(jī)取巧:使用數(shù)組模擬字典的效果
解決方案如下

根據(jù)key取值

根據(jù)key、data更新數(shù)組
我的需求是緩存一個(gè)閱讀記錄的字典其數(shù)據(jù)格式如下
-
read_record: {
-
keys: Array(), // [小說id]
-
datas: Array() // [章節(jié)id]
-
}
可以根據(jù)小說id去獲取最近閱讀的章節(jié)的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
-
}
-
},
-
// 獲取閱讀記錄 根據(jù)小說的id獲取上次閱讀的章節(jié)的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]
-
},
-
// 保存閱讀記錄 根據(jù)小說id、章節(jié)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,
-
})
-
},
緩存結(jié)果
|