localStorage失效问题

如何给localStorage添加生命周期?

每天0点就删除掉,第二天接口的新数据再次存入localStorage

依次循环,每天都会有新的数据存入,而旧的会在当天24点前就会被删掉

原生js该怎么写才对?

阅读 8.4k
6 个回答

写个日期进去,每次读取时和当前日期判断下是否过期,过期就更新

存的时候给个时间值,每次启动的时候,把过期的给删除
存的数据

localStorage.setItem('data', JSON.stringify({
    date: Date.now(),
    item: {name:'你好'}
}))

删除过期数据

var data = JSON.parse(localStorage.getItem('data'))
// isStale:过期的逻辑
if (isStale(data.date)) {
    localStorage.removeItem('data')
}

这种需求,最好就是服务端websocket主动推送,覆盖客户端localstorage

这种情况用本来就有生命周期的cookie不是更好吗

function getTime(type,current) {  //获取当天日期前一天
    let time = new Date();
    let date = time.getDate()-current||0;
    return type + date;
};
let str = this.getTime('preferential');返回 'preferential23'
    if (!localStorage.getItem(str)) { //检查今天的localStorage在不在,不再就存,读取也是一样;
    localStorage.setItem(str,'122')
}

删除昨天的数据的话
let str = this.getTime('preferential',1);返回 'preferential22';
if(localStorage.getItem(str)){
    localStorage.removeItem(str) //即可删除昨天的数据
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题