在诊断内存泄漏的过程中,判断定时器的正确使用是其中的一个重要阶段,但浏览器并没有直接提供这样的指标与方法。尽管如此,我们可以充分利用定时器的特性,获取当前窗口一共创建了多少个定时器,方法如下:
// 通过空函数获取当前定时器的数量
// 定义器的派发是递增的
var timer = setTimeout(function() {}, 1000);
// 清除多余的定时器
clearTimeout(timer)
// 输出定时器的数量
// 因为自己派发了一个,所以要减1
console.log(timer - 1)
如果将上面的代码进行周期执行,那么我们就可监控到页面定时器的增长情况,判断定时器与循环代码的结合是否合理。