mirror of
https://github.com/yoimiya-kokomi/miao-plugin.git
synced 2024-11-25 17:35:34 +00:00
79 lines
1.6 KiB
JavaScript
79 lines
1.6 KiB
JavaScript
import { Data } from '../components/index.js'
|
|
|
|
let cacheMap = {}
|
|
let reFn = {}
|
|
|
|
export default class Base {
|
|
getData (arrList = '', cfg = {}) {
|
|
arrList = arrList || this._dataKey || ''
|
|
return Data.getData(this, arrList, cfg)
|
|
}
|
|
|
|
// 获取指定值数据,支持通过
|
|
getVal (key, defaultValue) {
|
|
return Data.getVal(this, key, defaultValue)
|
|
}
|
|
|
|
// 获取缓存
|
|
_getCache (uuid = '', time = 10 * 60) {
|
|
if (uuid && cacheMap[uuid]) {
|
|
return cacheMap[uuid]._expire(time)
|
|
}
|
|
this._uuid = uuid
|
|
}
|
|
|
|
// 设置缓存
|
|
_cache (time = 10 * 60) {
|
|
let id = this._uuid
|
|
this._expire(time)
|
|
cacheMap[id] = this._proxy()
|
|
return cacheMap[id]
|
|
}
|
|
|
|
// 设置超时时间
|
|
_expire (time = 10 * 60) {
|
|
this._delCache()
|
|
if (time > 0) {
|
|
let id = this._uuid
|
|
if (id) {
|
|
reFn[id] = setTimeout(() => {
|
|
reFn[id] && clearTimeout(reFn[id])
|
|
delete reFn[id]
|
|
delete cacheMap[id]
|
|
}, time * 1000)
|
|
}
|
|
return cacheMap[id]
|
|
} else {
|
|
return this._delCache()
|
|
}
|
|
}
|
|
|
|
// 删除缓存
|
|
_delCache () {
|
|
let id = this._uuid
|
|
let ret = reFn[id] || false
|
|
if (id) {
|
|
reFn[id] && clearTimeout(reFn[id])
|
|
delete reFn[id]
|
|
}
|
|
return ret
|
|
}
|
|
|
|
// 返回代理对象
|
|
_proxy () {
|
|
return new Proxy(this, {
|
|
get (self, key) {
|
|
if (key in self) {
|
|
return self[key]
|
|
}
|
|
if (self._get) {
|
|
if (key in self) {
|
|
return self._get(key)
|
|
}
|
|
}
|
|
return (self._meta || self._data || self.meta || {})[key]
|
|
}
|
|
})
|
|
}
|
|
}
|