0

我想知道,它是如何工作的setInterval功能。

首先:我有一个简单的例子(现场演示
还有下面的代码。

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函数。

请任何人帮助我。

4

2 回答 2

0

setInterval 不断重复调用封闭的函数,直到调用 clearinterval。延迟可以以秒为单位 1000 = 1 秒,因为您已经给出了 50 的小延迟,所以该函数会快速连续重复调用,直到达到 50 限制

于 2012-07-02T15:50:01.343 回答
0

在您的代码中,您向setTimeout.

提供给的匿名函数被异步setInterval调用 。在当前函数完成之前,匿名函数不能第一次运行。调用是注册您的匿名函数以每 50 毫秒执行一次;它不会立即执行。setInterval(function() {...})

你的程序流程是这样运行的:

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匿名函数的块内。

于 2012-07-03T12:23:34.363 回答