import { BaseStore } from 'base-store'; import { FastStore } from 'fast-store'; const store = require('store'); const fastStore = new FastStore(); export class Store extends BaseStore { constructor() { super() } set (key: string, data: any, fast?:boolean) { if(fast) fastStore.set(key, data); store.set(key, data); return Promise.resolve(data); } get (key: string, fast?:boolean) { if(fast){ const fastValue = fastStore.get(key); if(fastValue) return Promise.resolve(fastValue); const data = store.get(key); fastStore.set(key, data); return Promise.resolve(data); }else{ const data = store.get(key); return Promise.resolve(data); } } remove (key: string) { fastStore.remove(key); store.remove(key); return Promise.resolve(); } clear () { fastStore.clear(); store.clearAll(); return Promise.resolve(); } base (storeName, fast?:boolean) { return { set: (key: string, data) => { return this.get(storeName).then((res) => { res = res || {}; res[key] = data; return this.set(storeName, res).then(() => { return data; }); }); }, get: (key: string) => { return this.get(storeName).then((res) => { res = res || {}; return res[key]; }); }, getAll: () => { return this.get(storeName).then((res) => { return res || {}; }); }, remove: (key: string) => { return this.get(storeName).then((res) => { res[key] = null; delete res[key]; return this.set(storeName, res); }); }, clear: () => { return this.clear(); } } } // 页面存储 page = (pageName:string) => { return this.base('page.' + pageName); } }