setInterval()函数如何工作?

时间:2019-06-11 06:27:41

标签: javascript setinterval

在将此函数放入变量中以便能够使用clearInterval()之后,为什么不调用此函数就可以工作

let time = 0;

var timer = setInterval(()=>{


    window.console.log(`Time passed: ${time}`);
    time = time+1;

    if(time>5){
        clearInterval(timer);
    }

}, 1000);

通常,当我们将函数放入变量中时,为了触发它,我们应该调用它。在此示例中,我认为它应该像这样工作:

timer();

但是它无需调用就可以工作。

谢谢。

3 个答案:

答案 0 :(得分:2)

如果您实际上将一个函数放在timer变量中,那么它会按您预期的那样工作,但事实并非如此。您正在调用setInterval函数并将其返回值存储到timer变量中。

为了使其按预期运行,您需要将其放入另一个这样的函数中:

let time = 0;

var timer = function() {
    return setInterval(()=>{            
        window.console.log(`Time passed: ${time}`);
        time = time+1;

        if(time>5){
            clearInterval(timer);
        }
    }, 1000);
}

现在,调用timer()将像您期望的那样调用计时器。

答案 1 :(得分:0)

The clearInterval() function in javascript clears the interval which has been set by setInterval() function before that.

 - setInterval() function takes two arguments first one was the function that to be executed and the second argument was time (in ms).
 - setInterval() executes the passed function for the given time interval. The number id value returned by setInterval() function is stored in a variable and it’s passed into the clearInterval() function to clear the interval.

   let time = 0;

let timer = function() {
    return setInterval(()=>{            
        window.console.log(`Time passed: ${time}`);
        time = time+1;

        if(time>5){
            clearInterval(timer);
        }
    }, 1000);
}

答案 2 :(得分:0)

您需要将setInterval包装到一个函数中。

$routeprovider