定时器类
class myTimer {
/**
* @param {Function} cb 回调函数
* @param {Number} sec 执行间隔时间ms
*/
constructor(cb, sec) {
this.cb = cb;
this.timer = null;
this.sec = sec;
}
/**
* 运行
*/
run() {
this.timer = setInterval(this.cb, this.sec);
}
/**
* 暂停
*/
stop() {
clearInterval(this.timer);
this.timer = null;
}
}
测试
使用场景:多用于页面倒计时
let count = 10;
let timer = new myTimer(() => {
// 达到条件,停止定时器,并清空当前引用,释放内存
if (count < 3) {
timer.stop();
timer = null;
} else {
count--;
console.log(count);
}
}, 1000);
timer.run();
// 10
// 9
// ...
// 3
timer.stop();
timer.run();
// 2
timer.run(); // 此时内存已被释放,定时器的对象应用被清除
// Uncaught TypeError: Cannot read property 'run' of null