| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /**
- * 短信倒计时锁
- */
- 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
|