定时器是我们在开发过程中用到比较多的,为了减少浏览器的加载进程以及内存的占用,我们通常会在使用了定时器后,手动清除定时器,达到释放内存的效果,通常的办法是:
let timer = = setTimeout(() => {
console.log(1);
}, 1000);
clearTimeout(timer);
在创建定时器的时候做好声明,然后清楚掉定时器,一两个还好,但是如果一个场景内存在多个定时器,例如在我们做动画的时候,这时候如果一个个的手动清除就太过于麻烦,所以我们可以用下面这个便捷的办法:
let timerObj = {}; // 设置全局的定时器对象
timerObj['timer1'] = setTimeout(() => { // 设置单个定时器
console.log(1);
}, 1000);
function clearAllTimer() { // 清除场景中定时器
for (let timer in timerObj) {
clearInterval(timerObj[timer]);
clearTimeout(timerObj[timer]);
}
}
这个办法是利用了对象的特点,声明的时候以对象属性的形式,这样可以设定函数,一次性清除所有的定时器。