let timers = []; export default { exists(key) { const _ = localStorage.getItem('stored_keys'); return _ ? _.split(',')?.indexOf(key) != -1 : false; }, store(key, value, duration = null) { if (!localStorage.getItem('stored_keys')) localStorage.setItem('stored_keys', key); else localStorage.setItem('stored_keys', localStorage.getItem('stored_keys') + ',' + key); localStorage.setItem(key, JSON.stringify(value)); console.log('store duration', duration) if (duration) { if (timers[key]) clearTimeout(timers[key]); timers[key] = setTimeout(() => { console.log("clear cache", key) this.clear([key]); }, duration * 1000); } }, /** * * @param {*} key * @param {*} cb * @param {*} param2 force 强制更新,调用cb * @returns */ async getList(key, cb = null, { force = false, duration = null } = {}) { if (this.exists(key) && !force) { return JSON.parse(localStorage.getItem(key)) } else { const list = await cb(); this.store(key, list, duration); return list; } }, clear(keys) { if (keys && keys.length) { let stored_keys = localStorage.getItem('stored_keys').split(','); keys.forEach((key) => { stored_keys = stored_keys.filter((item) => item != key); }); localStorage.setItem('stored_keys', stored_keys); return; } localStorage.removeItem('stored_keys'); }, }