zoukankan      html  css  js  c++  java
  • localStorage设置过期时间

    export const storage = {
        /*
        * set 存储方法
        * @ param {String}     key 键
        * @ param {String}     value 值,
        * @ param {String}     expired 过期时间,以分钟为单位,非必须
        */
        set(key, val, expired) {
            if (typeof val !== 'string') {
                val = JSON.stringify(val);
            }
            window.localStorage.setItem(key, val);
            if (expired) {
                window.localStorage.setItem(`${key}__expires__`, `${Date.now() + 1000 * 60 * expired}`);
            }
        },
        /*
       * get 获取方法
       * @ param {String}     key 键
       * @ param {String}     expired 存储时为非必须字段,所以有可能取不到,默认为 Date.now+1
       */
        get(key) {
            const expired = window.localStorage.getItem(`${key}__expires__`) || Date.now + 1;
            const now = Date.now();
    
            if (now >= expired) {
                window.localStorage.removeItem(key);
                return;
            }
            let val = window.localStorage.getItem(key);
            try {
                val = JSON.parse(val);
            } catch (e) {
                console.log(`${val} Unexpected token H in JSON at position 0`);
            }
            return val;
        },
        clear() {
            window.localStorage.clear();
        },
        /*
        * remove 移除
        * */
        remove(key) {
            if (window.localStorage.getItem(`${key}__expires__`)) {
                window.localStorage.removeItem(`${key}__expires__`);
            }
    
            if (window.localStorage.getItem(key)) {
                window.localStorage.removeItem(key);
            }
        }
    };

    在调用get方法时会进行时间范围校验:

          let arr = [
            {
              id: 0,
              name: "小明",
            },
            {
              id: 1,
              name: "小华",
            },
          ];
          storage.set("list", arr, 0.1);
          let result = storage.get("list");
          console.log(result);
  • 相关阅读:
    1864: [Zjoi2006]三色二叉树
    3611: [Heoi2014]大工程
    2286: [Sdoi2011]消耗战
    2298: [HAOI2011]problem a
    2037: [Sdoi2008]Sue的小球
    P4512 【模板】多项式除法
    P4238 【模板】多项式求逆
    3771: Triple
    P3365 改造二叉树
    1191: [HNOI2006]超级英雄Hero
  • 原文地址:https://www.cnblogs.com/wuqilang/p/14750474.html
Copyright © 2011-2022 走看看