js缓存,基于内存的缓存,支持有效期,懒加载
SoarCache
import { createCache } from "lg.cache";
sessionStorage.clear();
// 创建自定义缓存
const soarCache = createCache<any>({
name: 'soar',
storage: sessionStorage,
expires: 3000,
loader(k) {
console.log(120, k)
return new Promise(resolve => {
setTimeout(() => {
console.log(110, k)
resolve(k);
}, 3000)
})
}
})
// 删除所有键
soarCache.clear();
// 推入读取
soarCache.put('a', 'a', 3);
console.log('a', soarCache.get('a'));
// 删除指定键
soarCache.remove('a', 'b')
console.log('a', soarCache.get('a'));
// 同步加载
console.log('b', soarCache.compute('b', k => k));
// 异步加载
soarCache.load('c').then(res => {
console.log('c1', res);
})
soarCache.load('c').then(res => {
console.log('c2', res);
})
soarCache.load('c').then(res => {
console.log('c3', res);
})
// 异步加载
soarCache.load('d').then(res => {
console.log('d1', res);
})
soarCache.load('d').then(res => {
console.log('d2', res);
})
// 异步自定义加载函数
soarCache.load('e', (key: string)=> key).then(res => {
console.log('e', res);
})
soarCache.load('f', (key: string)=> Promise.resolve(key)).then(res => {
console.log('f', res);
})
SoarStorage
import { createStorage } from "lg.cache";
localStorage.clear();
const soarStorage = createStorage<any>({
name: 'soar',
storage: localStorage,
loader(k: string) {
console.log(120, k)
return new Promise(resolve => {
setTimeout(() => {
console.log(110, k)
resolve(k);
}, 3000)
})
},
expires: 3
});
// 设置和获取
soarStorage.setItem('A', 'A', 3);
console.log('A', soarStorage.getItem('A'));
// 删除
soarStorage.removeItem('A');
console.log('A', soarStorage.getItem('A'));
// 同步加载
console.log('B', soarStorage.compute('B', k => k));
// 异步加载
soarStorage.load('C').then(res => {
console.log('C1', res);
})
soarStorage.load('C').then(res => {
console.log('C2', res);
})
soarStorage.load('C').then(res => {
console.log('C3', res);
})
// 异步加载
soarStorage.load('D').then(res => {
console.log('D1', res);
})
soarStorage.load('D').then(res => {
console.log('D2', res);
})
// 异步自定义加载函数
soarStorage.load('E', (key: string)=> key).then(res => {
console.log('E', res);
})
soarStorage.load('F', (key: string)=> Promise.resolve(key)).then(res => {
console.log('F', res);
})