You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.1 KiB

/**
* 缓存管理类
*/
class Cache {
// 写入
set(key, value = "", expire = 0) {
let ttl = expire > 0 ? Date.now() + expire * 1000 : 0;
return uni.setStorageSync(key, {
value,
ttl,
});
}
// 读取
get(key, defalut = null) {
const data = uni.getStorageSync(key);
if (data && typeof data === "object") {
// 没有有效期
if (data.ttl === 0) {
return data.value;
}
return Date.now() > data.ttl ? defalut : data.value;
}
return defalut;
}
// 删除
delete(key) {
return uni.removeStorageSync(key);
}
// 清空
clear() {
return uni.clearStorageSync();
}
}
const cacheInstance = new Cache();
export default cacheInstance;
/**
* 缓存操作(获取、删除、设置)
* @param name string
* @param value any
* @param expire int 有效时间,秒
*/
export function cache(name = null, value = "", expire = 0) {
if (name === null) {
return cacheInstance;
}
if (value === "") {
return cacheInstance.get(name);
} else if (value === null) {
return cacheInstance.delete(name);
} else {
return cacheInstance.set(name, value, expire);
}
}