当前位置: 首页 > news >正文

制作公司宣传册百度seo收录

制作公司宣传册,百度seo收录,wordpress 0day漏洞,昆山品牌网站原文网址:JS--localStorage设置过期时间的方案(有示例)_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍如何使用localStorage设置数据的过期时间。 问题描述 localStorage是不支持设置过期时间的,cookie虽然支持设置过期时间但它存的数据量很小。所…

原文网址:JS--localStorage设置过期时间的方案(有示例)_IT利刃出鞘的博客-CSDN博客

简介

说明

本文介绍如何使用localStorage设置数据的过期时间。

问题描述

localStorage是不支持设置过期时间的,cookie虽然支持设置过期时间但它存的数据量很小。所以在需要存一些带过期时间的数据时,就要手写工具来实现。

思路

存数据时:将value封装到一个对象里,这个对象里额外加一个过期时间。

读数据时:如果当前时间超过了过期时间,则返回null或者空对象;否则返回value。

测试结果

如下几种方案的测试结果都是一样的:

第一次获取时获取到了数据;4秒后数据过期了,再获取时成了null。

方案1:封装为函数

js

/*** 写入localStorage* @param key    key* @param value  value* @param expire 超时时间(以秒为单位)*/
function writeExpire(key, value, expire) {let obj = {time: new Date().getTime(),data: value,expire: expire,};let objStr = JSON.stringify(obj);localStorage.setItem(key, objStr);
}/*** 读出localStorage*/
function readExpire(key) {let value = localStorage.getItem(key);if (!value || value === "null") {return value;}value = JSON.parse(value);if (Date.now() - value.time > value.expire * 1000) {localStorage.removeItem(key);return null;}return value.data;
}

html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="LocalStorageUtil.js"></script>
</head>
<body>
<script>writeExpire("key1", "value1", 2)console.log(readExpire("key1"));sleep(4000).then(() => {console.log(readExpire("key1"));})function sleep(time) {return new Promise((resolve) => setTimeout(resolve, time));}
</script>
</body>
</html>

方案2:封装为对象

js

export let localStorageUtil = {/*** 写入localStorage* @param key    key* @param value  value* @param expire 超时时间(以秒为单位)*/writeExpire: function (key, value, expire) {let obj = {time: new Date().getTime(),data: value,expire: expire,};let objStr = JSON.stringify(obj);localStorage.setItem(key, objStr);},/*** 读出localStorage*/readExpire: function (key) {let value = localStorage.getItem(key);if (!value || value === "null") {return value;}value = JSON.parse(value);if (Date.now() - value.time > value.expire * 1000) {localStorage.removeItem(key);return null;}return value.data;}
}// export default localStorageUtil;

html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<script type="module">import {localStorageUtil} from "./LocalStorageUtil.js";localStorageUtil.writeExpire("key1", "value1", 2)console.log(localStorageUtil.readExpire("key1"));sleep(4000).then(() => {console.log(localStorageUtil.readExpire("key1"));})function sleep(time) {return new Promise((resolve) => setTimeout(resolve, time));}
</script>
</body>
</html>

方案3:ES5扩展localStorage

js

/*** 写入localStorage* @param key    key* @param value  value* @param expire 超时时间(以秒为单位)*/
Storage.prototype.writeExpire = (key, value, expire) => {let obj = {data: value,time: Date.now(),expire: expire};//localStorage 设置的值不能是对象,转为json字符串localStorage.setItem(key, JSON.stringify(obj));
}/*** 读出localStorage*/
Storage.prototype.readExpire = key => {let value = localStorage.getItem(key);if (!value || value === "null") {return null;}val = JSON.parse(value);if (Date.now() - val.time > val.expire * 1000) {localStorage.removeItem(key);return null;}return val.data;
}

html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<script type="module">import './LocalStorageUtil.js';localStorage.writeExpire("key1", "value1", 2)console.log(localStorage.readExpire("key1"));sleep(4000).then(() => {console.log(localStorage.readExpire("key1"));})function sleep(time) {return new Promise((resolve) => setTimeout(resolve, time));}
</script>
</body>
</html>

方案4:ES6扩展localStorage

js

class LocalStorageUtil {constructor() {this.storage = window.localStorage;}/*** 写入localStorage* @param key    key* @param value  value* @param expire 超时时间(以秒为单位)*/writeExpire(key, value, expire) {let tempObj = {};tempObj.key = key;tempObj.value = value;tempObj.expire = Date.now() + expire * 1000;this.storage[key] = JSON.stringify(tempObj);return tempObj;}/*** 读出localStorage*/readExpire(key) {let value = localStorage.getItem(key);if (!value || value === "null") {return null;}let valueObject = JSON.parse(value);let expire = valueObject["expire"];if (!expire) {return valueObject.value;}if (Date.now() >= expire) {this.remove(key);return null;}return valueObject.value}remove(key) {this.storage.removeItem(key);}
}export default LocalStorageUtil;

html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<script type="module">import LocalStorageUtil from "./LocalStorageUtil.js";let localStorageUtil = new LocalStorageUtil();localStorageUtil.writeExpire("key1", "value1", 2)console.log(localStorageUtil.readExpire("key1"));sleep(4000).then(() => {console.log(localStorageUtil.readExpire("key1"));})function sleep(time) {return new Promise((resolve) => setTimeout(resolve, time));}
</script>
</body>
</html>

http://www.wangmingla.cn/news/108360.html

相关文章:

  • 做网站的策划书南京seo关键词排名
  • 需要做网站建设的公司曲靖seo
  • 网站开发任职要求上海百度公司总部
  • 藤虎广州网站建设百度快速查询
  • 丹阳网站怎么做seo软文范例大全800
  • 培训公司网站建设企业网站建设服务
  • 潍坊企业网站建设海淀区seo搜索引擎优化企业
  • 贵阳营销网站建设公司重庆seo怎么样
  • 网站开发的四个高级阶段包括最近一周新闻
  • 靖江网站推广怎样自己做网站
  • 成都电话营销外包公司seo的培训班
  • wordpress添加热门文章揭阳seo推广公司
  • 江苏专业做网站的公司营销渠道策略
  • 网络设计包括哪些搜索引擎优化的目的是对用户友好
  • 做网站 空间还是服务器官网关键词优化价格
  • 网站建设需要那些人网络平台的推广方法
  • 哪里做网站新闻发布的网站
  • 重庆平台网站建设哪家有今日国家新闻
  • 我有网网站建设黄页推广引流网站
  • 闸北企业网站制作朝阳网站建设公司
  • 全自动站群系统百度推广靠谱吗
  • 武汉做网站云优化科技软文范文大全1000字
  • 科技设计网站有哪些内容如何建立网站平台
  • 网站建设高端品牌怎么在百度上发广告
  • 合肥定制网站建设成人厨师短期培训班
  • 园林企业建设网站久久seo综合查询
  • 网站架构建设方案深圳网络营销策划公司
  • 漳州城乡住房建设部网站十大搜索引擎
  • 比较还做的调查网站志鸿优化网下载
  • 有网站怎么做企业邮箱网站结构有哪几种