/*** 会话时间管理类*/ class SessionTimeManager {/*** 设置会话时间* @param {string} key - 存储键名* @param {number} duration - 持续时间(毫秒)*/static setSessionTime(key, duration) {if (!key) throw new Error('键名不能为空')const expiryTime = Date.now() + durationsessionStorage.setItem(key, expiryTime.toString())}/*** 检查并更新会话时间* @param {string} key - 存储键名* @param {number} duration - 持续时间(毫秒),默认为24小时* @returns {boolean|string} - 返回true表示更新成功,'OneTime'表示首次设置,false表示未过期*/static checkAndUpdateSession(key, duration = 86400000) {if (!key) throw new Error('键名不能为空')const storedTime = sessionStorage.getItem(key)const currentTime = Date.now()// 如果没有存储时间,设置并返回'OneTime'if (!storedTime) {this.setSessionTime(key, duration)return 'OneTime'}// 检查是否过期if (currentTime >= parseInt(storedTime)) {this.setSessionTime(key, duration)return true}return false}/*** 获取剩余时间* @param {string} key - 存储键名* @returns {number} - 剩余时间(毫秒),如果key不存在返回0*/static getRemainingTime(key) {const storedTime = sessionStorage.getItem(key)if (!storedTime) return 0const remaining = parseInt(storedTime) - Date.now()return remaining > 0 ? remaining : 0} }// 使用示例 const SESSION_KEY = 'sessionTimeKey' // 统一使用一个键名 const SESSION_DURATION = 5000 // 10秒的会话时间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)