localStorage 本身不存在和有效期相关的 API,那么实现一个带有效期的缓存
###const localStorageWithTime = {
get: k => {
const v = localStorage.getItem(k)
if (! v) return undefined
const o = JSON.parse(v), l = o?.__life__
if (! l) return console.error(`localStorageWithTime: "${k}" doesn't have property "__life__".`)
if (l <= Date.now()) {
localStorage.removeItem(k)
return console.log(`localStorageWithTime: "${k}" expired. "__life__" is ${l}.`)
}
return o.__data__
},
set: (k, v, l) => {
localStorage.setItem(k, JSON.stringify({ __life__: l, __data__: v }))
}
}
###存储时加上过期日期 获取时如果过期则获取为空且删除
###可以参考 cookie 的机制,在存储的时候加上过期事件,可以是相对的也就是绝对的