小程序多页面接口数据缓存

207 阅读1分钟
let info = null;
let promise = null;
let loading = false;

// needRefresh 是否强制刷新
export default function getInfo(data={}, needRefresh=false) {
  try {
    info = wx.getStorageSync('doctorInfo');
  } catch (e) {}
  if (info && !needRefresh) {
    return new Promise((resolve, reject) => {
      resolve(info)
    })
  }
  if (loading) {
    return promise;
  }
  loading = true;
  return (promise = new Promise((resolve, reject) => {
    wx.request({
      url: 'https://xxx.com.cn/xxx',
      data,
      header: {
        'content-type': 'application/x-www-form-urlencoded;charset=UTF-8',
      },
      method: 'POST',
      success: function(res) {
        wx.setStorageSync('doctorInfo', res.data)
        resolve(res.data)
        loading = false;
      },
      fail: function(err) {
        loading = false;
        reject(err)
      }
    })
  }))
}