while(true) 与 setInterval(function(),0) [重复]

2024-01-16

设置间隔()

重复调用函数或执行代码片段,每次调用该函数之间有固定的时间延迟。

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(使用前将#替换为@)

while(true) 与 setInterval(function(),0) [重复] 的相关文章

随机推荐