javaweb如何实现分类功能_LocalStorage 如何实现过期时间功能

点击右上方红色按钮关注“web秀”,让你真正秀起来

c5d9843982905dd337a1100a65256e6d.png

使用过localStorage的小伙伴都知道,localStorage本身没有时间过期的功能,那么如何实现localStorage过期功能呢?

思路

1、使用localStorage时,设置一个定时器,比如10分钟后过期,那就十分钟后清除localStorage。但是面临的问题是,如果浏览器关闭,定时器也就失效。如果解决呢?

10分钟后过期,那就知道了截至时间,每次打开网址,就去检测当前时间是否超过了截至时间,没有就重新开启定时器,如果超过,直接清除localStorage。

2、有了思路一,发现定时器并没有什么用。所以,使用localStorage.setItem时,并存入截至时间,每次localStorage.getItem时,校验当前时间是否超过了截至时间,如果超过,直接清除localStorage。

下面我们用代码,看看如何实现

代码实现

(function () {  var getItem = localStorage.getItem.bind(localStorage)  var setItem = localStorage.setItem.bind(localStorage)  var removeItem = localStorage.removeItem.bind(localStorage)  localStorage.getItem = function (keyName) {    var expires = getItem(keyName + '_expires')    if (expires && new Date() > new Date(Number(expires))) {      removeItem(keyName)      removeItem(keyName + '_expires')    }    return getItem(keyName)  }  localStorage.setItem = function (keyName, keyValue, expires) {    if (typeof expires !== 'undefined') {      var expiresDate = new Date(expires).valueOf()      setItem(keyName + '_expires', expiresDate)    }    return setItem(keyName, keyValue)  }})()

重写localStorage.setItem(),localStorage.getItem()方法,setItem()时,并存入expires截至时间,getItem()时,判断截至时间和当前时间,超过即清除。

调用示例:

localStorage.setItem('key', 'value', new Date() + 10000) // 10 秒钟后过期localStorage.getItem('key') // 10秒后获取,就是空的了

喜欢小编或者觉得小编文章对你有帮助的,可以点击一波关注哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值