我有以下代码:
var focusIntervalObj = setInterval(function(){
focusDelayCaused++;
console.log(focusDelayCaused);
}, 100);
clearInterval(focusIntervalObj);
我已经安装了一个firebug。
我希望这段代码记录focusDelayCaused
的值。
但是当我执行时,它没有这样做,而且clearInterval()
只是返回未定义。
请导游。
您正在设置间隔并在它触发之前清除它。
var focusIntervalObj = setInterval(function(){
focusDelayCaused++;
console.log(focusDelayCaused);
clearInterval(focusIntervalObj);
}, 100);
这可能就是你在想的。更简单的是:
var focusIntervalObj = setTimeout(function(){
focusDelayCaused++;
console.log(focusDelayCaused);
}, 100);
在上面的代码中,您将在刚刚设置完间隔后立即清除它。所以它永远没有机会运行。
在满足某种条件后清除间隔,而不是在设置后立即清除间隔,会有所帮助。
if (focusDelayCaused>50) {
clearInterval(focusIntervalObj);
}
如果你想让某个函数只执行一次就不再执行,使用setTimeout,在你的情况下:
var focusIntervalObj = setTimeout(function(){
focusDelayCaused++;
console.log(focusDelayCaused);
}, 100);