localStorageAndTime.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. /**
  2. * 保存时间戳,设置过期时间
  3. * @param {String} kind [大类]
  4. * @param {String} key [key值]
  5. * @param {*} value
  6. */
  7. export function setLocalStorageAndTime (kind, key, value) {
  8. const data = localStorage.getItem(kind)
  9. if (!data || data === 'undefined') {
  10. localStorage.setItem(kind, JSON.stringify({ [key]: { data: value, time: new Date().getTime() } }))
  11. return
  12. }
  13. const obj = JSON.parse(data)
  14. obj[key] = { data: value, time: new Date().getTime() }
  15. localStorage.setItem(kind, JSON.stringify(obj))
  16. }
  17. // 默认过期时间随机一至两小时
  18. export function getLocalStorageAndTime (kind, key, exp = 3600 * 1000 * (Math.random() + 1)) {
  19. // 获取数据
  20. const data = localStorage.getItem(kind)
  21. if (!data) return null
  22. const dataObj = JSON.parse(data)
  23. if (!dataObj[key]) return null
  24. // 与过期时间比较
  25. if (new Date().getTime() - dataObj[key].time > exp) {
  26. // 过期删除返回null
  27. dataObj[key] = null
  28. localStorage.setItem(kind, JSON.stringify(dataObj))
  29. return null
  30. } else {
  31. return dataObj[key].data
  32. }
  33. }