js 设置有效的localStorage

/**
 * 设置有时效的localStorage
 * @调用:setSessionStorage('access_token', '123456', 5000);
 * @调用:getSessionStorage('access_token');
 */
export function setLocalStorage(key, value, expires) {
    let params = { key: key, value: value, expires: expires};
    if (expires) {
        // 记录何时将值存入缓存,毫秒级
        let data = Object.assign(params, { startTime: new Date().getTime() });
        localStorage.setItem(key, JSON.stringify(data));
    } else {
        if (Object.prototype.toString.call(value) == '[object Object]') {
            value = JSON.stringify(value);
        }
        if (Object.prototype.toString.call(value) == '[object Array]') {
            value = JSON.stringify(value);
        }
        localStorage.setItem(key, value);
    }
}
// 获取有时效的sessionStorage
export function getLocalStorage(key) {
    let item = localStorage.getItem(key);
    // 先将拿到的试着进行json转为对象的形式
    try {
        item = JSON.parse(item);
    } catch (error) {
        // eslint-disable-next-line no-self-assign
        item = item;
    }
    // 如果有startTime的值,说明设置了失效时间
    if (item && item.startTime) {
        let date = new Date().getTime();
        // 如果大于就是过期了,如果小于或等于就还没过期
        if (date - item.startTime > item.expires) {
            localStorage.removeItem(key);
            return '';
        } else {
            return item.value;
        }
    } else {
        return item;
    }
}

 

posted @ 2021-08-05 19:48  expworld  阅读(380)  评论(0编辑  收藏  举报