setInterval函数的执行机制是什么

时间:2012-07-02 15:38:04

标签: javascript setinterval

我想知道setInterval函数是如何工作的。

首先:我有一个简单的例子(Live demo
还有下面的代码。

HTML:

<div id="elem"></div>
<div id="count"></div>
<div id="Timer"></div>

使用Javascript:

var s = 10;
var count = 0;
if (s == 20) alert("S= 20");
var timer = setInterval(function () {
    if (count < 50) {
        count++;
        document.getElementById('count').innerHTML = "Counter: " + count;
    }
    else {
        clearInterval(timer);
        document.getElementById('count').innerHTML = "Counter: End Of Count";
    }
}, 50);
s = 20;
document.getElementById('elem').innerHTML = "variable 's': " + s;
document.getElementById('Timer').innerHTML = "Timer value: " + timer;
if (s == 20) alert("S= 20");

我想要的就是它的功能如何 实现函数代码后,返回到首页代码的开头,或者再使用clearInterval函数返回实现函数代码。

有人请帮助我。

2 个答案:

答案 0 :(得分:0)

setInterval一直重复调用封闭的函数,直到调用clearinterval。延迟可以在1000秒= 1秒内给出,因为你给出了一个小的延迟50,这个函数会连续快速连续调用,直到达到50极限

答案 1 :(得分:0)

在您的代码中,您要向setTimeout提供匿名函数。

提供给setInterval的匿名函数称为异步。在当前函数完成之前,匿名函数无法第一次运行。对setInterval(function() {...})的调用是注册您的匿名函数,每50ms执行一次; 立即执行。

您的程序流程如下:

set initial variables
check if s == 20
register (not execute) the anonymous function with setInterval
set s = 20
print results
check if s == 20
end of your code blcok
...
50ms later, the first call to your anonymous setTimeout function finally happens
Repeatedly call the anonymous function every 50ms

要点:如果在匿名函数完成后需要执行某些操作,请将这些操作放在匿名函数本身中。在您的代码中,我怀疑您想要在setTimeout调用之后出现一些行,并将它们放在匿名函数的else块中。

相关问题