带过期时间的localstorage封装

localstorage原本是不带过期时间的,xijs提供了一个带过期时间封装的store工具,但是用起来因为文档基本等于没有,所以干脆直接封装一个用,其中ttl是过期时间,以毫秒计算。

// 设置
    function setLocalStorageWithExpiry(key, value, ttl) {
      const now = new Date()
      // ttl : 毫秒
      const item = {
        value: value,
        expiry: now.getTime() + ttl,
      }
      localStorage.setItem(key, JSON.stringify(item))
    }
// 获取value
    function getLocalStorageWithExpiry(key) {
      const itemValue = localStorage.getItem(key)
      if (!itemValue) {
        return null
      }
      const item = JSON.parse(itemValue)
      const now = new Date()
      if (now.getTime() > item.expiry) {
        localStorage.removeItem(key)
        return null
      }
      return item.value
    }
// 删除过期的所有key
    function batchRemoveExpiredKeys() {
      const keys = Object.keys(localStorage);
      // 过滤出过期的key
      const expiredKeys = keys.filter(key => {
        const value = localStorage.getItem(key);
        try {
          const data = JSON.parse(value);
          return data.expirey && Date.now() > data.expirey;
        } catch (e) {
          return false;
        }
      });
      // 删除过期的key
      expiredKeys.forEach(key => {
        localStorage.removeItem(key);
      });
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值