设置间隔()
重复调用函数或执行代码片段,每次调用该函数之间有固定的时间延迟。
while()
创建一个循环,只要测试条件的计算结果为 true,该循环就会执行指定的语句。之前评估过条件
执行该语句。
如果我使用while(true)
要执行特定语句,我的浏览器要么崩溃(Firefox), lags(Opera),否则语句不会被执行(Chrome),但如果我用setInterval()
与固定时间0秒,一切都很完美,尽管只有 0 秒,并且while(true)
从逻辑上讲不可能比 0 秒快,但为什么会发生这种情况呢?
while()例子:
<!DOCTYPE html>
<html>
<body>
<div id="counter"></div>
<script>
var i = 0;
while (true)
{
document.getElementById("counter").innerHTML += i++;
}
</script>
</body>
</html>
设置间隔()例子:
<!DOCTYPE html>
<html>
<body>
<div id="counter"></div>
<script>
var i = 0;
setInterval(function() { counter() }, 0);
function counter()
{
document.getElementById("counter").innerHTML += i++;
}
</script>
</body>
</html>
存在很大的差异,其中涉及锁定。第一种方法,while
循环会锁定用户的CPU,因为它会永远运行而不停止,并且会占用100%的处理器。setInterval
实际上有一个隐式的最小数量,并且取决于浏览器。我相信大约是10毫秒。所以,你的setInterval
实际上只运行一毫秒左右,进行简单的更新,每 10 毫秒一次。这对处理器来说非常苛刻,但不会需要 100% 的处理器,并且可以通过操作系统的任务管理来缓解。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)