UNPKG

lc-web-request

Version:

web请求服务器工具,避免重复请求,一段时间内的数据缓存在浏览器中。

114 lines (113 loc) 3.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.cache = void 0; var _md = _interopRequireDefault(require("crypto-js/md5")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var localData = { data: {}, setItem: function setItem(key, value) { this.data[key] = value; }, clear: function clear() { this.data = {}; }, getItem: function getItem(key) { return this.data[key]; }, removeItem: function removeItem(key) { this.data[key] = null; } }; var getStorage = function getStorage() { if (!window || !window.localStorage) { return localData; } else { return window.localStorage; } }; var TimeUnit = { SECONDS: 'SECONDS', MINUTES: 'MINUTES', HOURS: 'HOURS', DAYS: 'DAYS' }; var LocalTimeUnit = { SECONDS: 1000, MINUTES: 1000 * 60, HOURS: 1000 * 60 * 60, DAYS: 1000 * 60 * 60 * 24 }; var removeItem = function removeItem(key) { if (typeof key !== 'string') { key = JSON.stringify(key); } getStorage().removeItem((0, _md["default"])(key).toString()); }; var saveStartTime = function saveStartTime(startTime) { if (getStartTime() > parseInt("".concat(startTime || '0'))) { return; } getStorage().setItem('startTime', startTime); }; var getStartTime = function getStartTime() { return parseInt(getStorage().getItem('startTime') || '0'); }; var saveData = function saveData(config) { if (config && config.key && config.url && config.data) { var url = config.url; var key = config.key; var _cache = { url: url, key: key, persistent: config.persistent, startTime: getStartTime(), expires: !config.persistent ? new Date().getTime() + (config.expires || 3) * LocalTimeUnit[config.timeUnit || 'SECONDS'] : 0, data: config.data }; getStorage().setItem(key, JSON.stringify(_cache)); } }; var expires = function expires() { var storage = getStorage(); var data = storage.data || storage; for (var key in data) { var _cache2 = JSON.parse(storage.getItem(key)); if (_cache2 && !_cache2.persistent && _cache2.expires < new Date().getTime()) { getStorage().removeItem(key); } } }; var getData = function getData(key, callback) { var cache = JSON.parse(getStorage().getItem(key)); if (cache) { if (cache.startTime < getStartTime()) { getStorage().removeItem(key); return; } if (cache.persistent || cache.expires >= new Date().getTime()) { return new Promise(function (resolve, reject) { if (callback) { callback(cache.data); } resolve(cache.data); }); } getStorage().removeItem(key); } }; var cache = exports.cache = function cache() { if (window) { setInterval(expires, LocalTimeUnit.MINUTES); } return { saveData: saveData, getData: getData, saveStartTime: saveStartTime, removeItem: removeItem, LocalTimeUnit: LocalTimeUnit, TimeUnit: TimeUnit }; }; var _default = exports["default"] = cache;