小程序:wx.setStorageSync缓存的封装,实现缓存过期时间设置

class MyStorageManage {

  /**
   * 从缓存中获取数据
   * @param  key 
   */
  getStorage(key) {
    //从缓存中读取
    let data = {}
    if (key && this._isReadOrSetStorage(key)) {
      data = wx.getStorageSync(key)
    }
    return data
  }


  /**
   * 获取缓存
   * @param String $key  key
   * @param String $def  若想要无缓存时,返回默认值则get('key','默认值')(支持字符串、json、数组、boolean等等)
   * @return value;
   */
  getStorage(key, def = '') {
    let data = def;
    if (key && this._isReadOrSetStorage(key)) {
      let timeout = parseInt(wx.getStorageSync(`${key}__separator__`) || 0);
      // 过期失效
      if (timeout) {
        if (Date.now() > timeout) {
          this._remove(key);
          return;
        }
      }
      data = wx.getStorageSync(key)
    }
    return data;
  }

  setStorage(key, value) {
    if (this._isReadOrSetStorage(key)) {
      wx.setStorage({
        data: value,
        key: key
      })
    }
  }


  /**
   * 设置缓存
   * @param String $key       key
   * @param String $value     value(支持字符串、json、数组、boolean等等)
   * @param Number $timeout   过期时间(单位:分钟)不设置时间即为永久保存
   * @return value;
   */
  setStorage(key, value, timeout = 0) {
    if (key && this._isReadOrSetStorage(key)) {
      let _timeout = timeout ==0 ?this._gettimeout(key):parseInt(timeout);
      wx.setStorageSync(key, value);
      if (_timeout) {
        wx.setStorageSync(`${key}__separator__`, Date.now() + 1000 * 60 * _timeout);
      } else {
        wx.removeStorageSync(`${key}__separator__`);
      }
      return value;
    }
  }
/**
 * 根据key值返回默认时间
 * @param {*} key 
 */
  _gettimeout(key){
    //默认30分钟
    let time = 30;
    return time
  }

  /**
   * 判断是否从缓存中读取或者将数据存储到缓存中
   * @param {} url 
   */
  
  _remove(key) {
    wx.removeStorageSync(key);
    wx.removeStorageSync(`${key}__separator__`);
  }
  
   _isReadOrSetStorage(url) {
    //如果是获取点赞信息则获取最新的数据
    console.log(`链接=${url}`);
    if (url.indexOf('favor') != -1||url.indexOf("short_comment")!=-1) {
      return false;
    }
    return true;
  }

}

export {MyStorageManage}

使用Promise封装wx.request wx.setStorage封装,实现设置过期时间源码下载链接如下:

https://download.csdn.net/download/v587ge/12409025

你可能感兴趣的:(小程序封装,小程序,小程序,缓存)