lc-web-request
Version:
web请求服务器工具,避免重复请求,一段时间内的数据缓存在浏览器中。
114 lines (113 loc) • 3.07 kB
JavaScript
;
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;