UNPKG

javascriptx

Version:

javascript 基础库扩展

140 lines (132 loc) 5.12 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var store = { _data__: '_data__', _task__: '_task__', group: '', timer: new Map(), get: function get(key) { var group = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : store.group; if (localStorage) { var value = localStorage.getItem(group + store._data__ + key); if (value) { var j = JSON.parse(value); if (j.time && j.time < new Date()) { localStorage.removeItem(group + store._data__ + key); return null; } return j.data; } } return null; }, set: function set(key, value, time) { var group = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : store.group; if (localStorage) { var t = null; if (time && time.length >= 2) { try { t = new Date(); var n = parseInt(time.substring(0, time.length - 1), 10); var f = time.substring(time.length - 1, time.length); switch (f) { case 's': t.setSeconds(t.getSeconds() + n); break; case 'm': t.setMinutes(t.getMinutes() + n); break; case 'h': t.setHours(t.getHours() + n); break; case 'd': t.setDate(t.getDate() + n); break; case 'w': t.setDate(t.getDate() + n * 7); break; case 'M': t.setMonth(t.getMonth() + n); break; case 'y': t.setFullYear(t.getFullYear() + n); break; } t = t.getTime(); } catch (e) { t = null; } } try { localStorage.setItem(group + store._data__ + key, JSON.stringify({ data: value, time: t })); } catch (ex) { this.clear(true); localStorage.setItem(group + store._data__ + key, JSON.stringify({ data: value, time: t })); } return true; } return false; }, remove: function remove(key) { var group = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : store.group; if (localStorage) { localStorage.removeItem(group + store._data__ + key); } }, clear: function clear(justCache) { var group = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : store.group; if (localStorage) { for (var i = 0; i < localStorage.length;) { if (localStorage.key(i).indexOf(group + store._data__) !== -1) { if (justCache) { var value = localStorage.getItem(localStorage.key(i)); if (value) { var j = JSON.parse(value); if (j.time && j.time < new Date()) { if (localStorage.removeItem) { localStorage.removeItem(localStorage.key(i)); } else { return; } } else { i++; } } } else { if (localStorage.removeItem) { localStorage.removeItem(localStorage.key(i)); } else { return; } } } else { i++; } } } }, listen: function listen(callback, key, time) { if (localStorage) { clearInterval(store.timer.get(key)); store.lastTimer = setInterval(function () { var param = store.get(store._task__ + key, ''); if (param && callback) { callback(param); store.remove(store._task__ + key); } }, time || 100); store.timer.set(key, store.lastTimer); return store.lastTimer; } }, removeListen: function removeListen() { var timer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : store.lastTimer; clearInterval(timer); }, trigger: function trigger(param, key, time) { store.set(store._task__ + key, param, time || '10s', ''); } }; exports.default = store;