帝王谷资源网 Design By www.wdxyy.com
localStorage除非人为手动清除,否则会一直存放在浏览器中,但是很多情况下我们可能需要localStorage有一个过期时间,比如我们将用户身份认证 token 保存在客户端,1周之内有效,超过一周则要重新登录,那么这种需求该怎么实现呢
要知道,localStorage本身并没有提供过期机制,既然如此,那就只能我们自己来实现了,我们可以直接给其原型上加上这样一个方法
Storage.prototype.setExpire=(key,value,expire) =>{ }; Storage.setExpire(key,value,expire);
要过期就必须要记录时间,我们的思路是,设置值得时候就将当前时间记录进去,然后获取值得时候判断一下当前时间和之前的时间差是否在某个范围之内,若果超出范围,则清空当前项,并返回null
要将时间加入到值中就必须要定义一个格式
Storage.prototype.setExpire=(key, value, expire) =>{ let obj={ data:value, time:Date.now(), expire:expire }; localStorage.setItem(key,JSON.stringify(obj)); }
包括下面3个字段
- data 实际的值
- time 当前时间戳
- expire 过期时间
因为localStorage 设置的值不能为对象, 所以这里使用了 JSON.stringify 方法将其转为字符串,最终在使用的时候得转回来。
接着我们添加一个获取的方法
Storage.prototype.getExpire= key =>{ let val =localStorage.getItem(key); if(!val){ return val; } val =JSON.parse(val); if(Date.now()-val.time>val.expire){ localStorage.removeItem(key); return null; } return val.data; }
我们可以先测试一下
localStorage.setExpire("token",'xxxxxx',5000); window.setInterval(()=>{ console.log(localStorage.getExpire("token")); },1000)
本质上我们的思路并非是要定时去清理过期的项,而是在获取的时候判断是否过期,如果过期再去清除该项。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
帝王谷资源网 Design By www.wdxyy.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
帝王谷资源网 Design By www.wdxyy.com
暂无评论...
更新日志
2024年07月03日
2024年07月03日
- 绝区零闪避鸣徽有哪些 绝区零闪避鸣徽效果介绍
- 《逸剑风云决》新坐骑解锁条件
- 《幻兽帕鲁》新增技能果实介绍
- 《原神》4.7飞迸湍流二重奏活动介绍
- 谢宇威1995-《直到现在我还不明白我是唯一的借口》台湾首版[WAV+CUE]
- 尚雯婕2012-最后的赞歌2CD[华谊兄弟][FLAC+CUE]
- 常石磊2010-自己[风向乐动][WAV+CUE]
- 玩家吐槽索尼第一方:15家工作室11家不知道新作是啥
- 曾在韩国爆火的糖葫芦遇冷 韩国糖葫芦店接连倒闭
- 清凉一夏!《妮姬》官方发布各角色迷人泳装视频
- 群星.2008-梦想的翅膀2CD【种子音乐】【WAV+CUE】
- 林良乐.2005-辉煌全记录2辑【乡城】【WAV+CUE】
- 林忆莲.2016-陪着我走【环球】【WAV+CUE】
- 原画壁纸及美图第259期,无水印可自取
- 原画壁纸及美图第260期,无水印可自取