/** * 短信倒计时锁 */ class SmsLock { // 发送倒计时默认60秒 time = null // 计时器 timer = null // 倒计时默认60秒 lockTime = 60 // 锁标记名称 lockName = '' /** * 实例化构造方法 * * @param {String} purpose 唯一标识 * @param {Number} time */ constructor(purpose, lockTime = 60) { this.lockTime = lockTime this.lockName = `SMSLOCK_${purpose}` this.init() } // 开始计时 start(time = null) { this.time = time == null || time >= this.lockTime ? this.lockTime : time this.clearInterval() this.timer = setInterval(() => { if (this.time == 0) { this.clearInterval() this.time = null localStorage.removeItem(this.lockName) return } this.time-- // 设置本地缓存 localStorage.setItem(this.lockName, this.getTime() + this.time) }, 1000) } // 页面刷新初始化 init() { let result = localStorage.getItem(this.lockName) if (result == null) return let time = result - this.getTime() if (time > 0) { this.start(time) } else { localStorage.removeItem(this.lockName) } } // 获取当前时间 getTime() { return Math.floor(new Date().getTime() / 1000) } // 清除计时器 clearInterval() { clearInterval(this.timer) } } export default SmsLock