| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | let cacheMap =  new Map()let timeoutDefault = 1200 function isTimeout (name) {  const data = cacheMap.get(name)  if (!data) return true  if (data.timeout === 0) return false   const currentTime = Date.now()  const overTime = (currentTime - data.createTime) / 1000  if (overTime > data.timeout) {    cacheMap.delete(name)    if (name.startsWith('_')) {      try {        uni.removeStorageSync(name)      } catch (e) {        console.log(e)      }    }    return true  }  return false} class CacheCell {  constructor (data, timeout) {    this.data = data    this.timeout = timeout    this.createTime = Date.now()  }} class MinCache {  constructor (timeout) {    try {      const res = uni.getStorageInfoSync()      res.keys.forEach(name => {        try {          const value = uni.getStorageSync(name)          cacheMap.set(name, value)        } catch (e) {          console.log(e)        }      })    } catch (e) {      console.log(e)    }    timeoutDefault = timeout  }  set (name, data, timeout = timeoutDefault) {    const cachecell = new CacheCell(data, timeout)    let cache = null    if (name.startsWith('_')) {      try {        uni.setStorageSync(name, cachecell)        cache = cacheMap.set(name, cachecell)      } catch (e) {        console.log(e)      }    } else {      cache = cacheMap.set(name, cachecell)    }    return cache  }  get (name) {    return isTimeout(name) ? null : cacheMap.get(name).data  }  delete (name) {    let value = false    if (name.startsWith('_')) {      try {        uni.removeStorageSync(name)        value = cacheMap.delete(name)      } catch (e) {        console.log(e)      }    } else {      value = cacheMap.delete(name)    }    return value  }  has (name) {    return !isTimeout(name)  }  clear () {    let value = false    try {      uni.clearStorageSync()      cacheMap.clear()      value = true    } catch (e) {      console.log(e)    }    return value  }} MinCache.install = function (Vue, {timeout = 1200} = {}) {  Vue.prototype.$cache = new MinCache(timeout)} export default MinCache
 |