1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
class SessionTimeManager {
static setSessionTime(key, duration) { if (!key) throw new Error('键名不能为空'); const expiryTime = Date.now() + duration; sessionStorage.setItem(key, expiryTime.toString()); }
static checkAndUpdateSession(key, duration = 86400000) { if (!key) throw new Error('键名不能为空');
const storedTime = sessionStorage.getItem(key); const currentTime = Date.now();
if (!storedTime) { this.setSessionTime(key, duration); return 'OneTime'; }
if (currentTime >= parseInt(storedTime)) { this.setSessionTime(key, duration); return true; }
return false; }
static getRemainingTime(key) { const storedTime = sessionStorage.getItem(key); if (!storedTime) return 0;
const remaining = parseInt(storedTime) - Date.now(); return remaining > 0 ? remaining : 0; } }
const SESSION_KEY = 'sessionTimeKey'; const SESSION_DURATION = 5000;
const flag = SessionTimeManager.checkAndUpdateSession(SESSION_KEY, SESSION_DURATION); setTimeout(() => { console.log(flag, '-----flag'); if (flag === true) { console.log('会话已更新'); } if (flag === 'OneTime') { console.log('首次设置会话'); } if (flag === false) { console.log('会话未过期,剩余时间:', SessionTimeManager.getRemainingTime(SESSION_KEY), 'ms'); } }, 1000);
|