setInterval 、setTimeout 的调试,有一个技巧:
var timer = null;
function test() {
console.log("begin"); // 计时器开始
clearInterval(timer);
timer = setInterval(function() {
if(xxx) {
clearInterval(timer);
console.log("end"); // 计时器结束
}
}, 100);
}
我们只要在控制台查看begin、end的对数,就可以知道计时器的情况了(计时器个数、计时器是否被清除)。
总结以下调试计时器,常常出现的问题:
- 每次调用函数前,没有清除计时器。导致计时器重复(造成其回调函数频繁执行)。
- 计时器标识符(timer)没有设置全局变量(导致不同计时器混用一个timer)。