什么是错误的setInterval()和clearInterval()在这个javascript函数?clearInte

Whats wrong with setInterval() and clearInterval() in this javascript function? clearInterval returns undefined

本文关键字:javascript clearInte 函数 错误 setInterval 什么 clearInterval      更新时间:2023-09-26

我有以下代码:

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);