Javascript 是不是;“设置间隔”;对浏览器行为有影响吗?

Javascript 是不是;“设置间隔”;对浏览器行为有影响吗?,javascript,setinterval,Javascript,Setinterval,JavaScript中的setInterval功能是否会降低浏览器速度,甚至导致浏览器崩溃 假设我有一个包含数千个(大约10000个)的页面,我循环遍历它们并向它们添加一些HTML,如下所示: var counter = 0; setInterval(function() { $('div').each(function(i, e) { counter++; $(this).html('Added contents for DIV at index: '

JavaScript中的
setInterval
功能是否会降低浏览器速度,甚至导致浏览器崩溃

假设我有一个包含数千个(大约10000个)
的页面,我循环遍历它们并向它们添加一些HTML,如下所示:

var counter = 0;

setInterval(function() {
    $('div').each(function(i, e) {
        counter++;
        $(this).html('Added contents for DIV at index: ' + counter);
    });
}, 1);
我特意在each函数下设置了
计数器+++
,这样我们可能会减慢这个脚本的执行过程,我知道我可以只使用jQuery的
$.each()
函数中的
I
参数

重复的间隔时间为1毫秒,我想知道:

让间隔以如此低的速率工作是否安全?

Can setInterval function in JavaScript slow down a browser or even cause a browser crash?
否。这取决于您在setInterval函数中执行的操作


10000 div是非常大的浏览器将崩溃,因为大量的回流。但是,如果使用fragment,则可以克服浏览器崩溃问题

Is it secure to have intervals work at this low rate?

你必须回答这个问题。如果您认为要在setInterval中执行的作业需要1毫秒,那么这不是问题。

问题可能是循环/操作数千个DOM节点,而不是setInterval。是否测试它?因为您已经编写了代码。此外,“安全”在什么意义上,针对什么?10k div…每1ms更新所有div的内容…是的,您可能会遇到浏览器冻结或崩溃。我甚至无法想象什么样的用例可以保证这样的东西……我无法想象为什么你甚至需要在一个页面上添加10k div,更不用说每1ms循环更新一次了。。。D:10000个div非常大,浏览器会因为大量回流而崩溃。但是,如果您使用fragment,那么我认为您可以克服这个问题。在DOM树中,10000个节点的数量非常多。如上所述,单独操作每一个将导致10000个文档回流/重新绘制。SetInterval不是问题所在:它只是延迟循环的执行,直到Javascript线程空闲。。。然后它用这个非常密集的循环锁定线程。您需要一个更好的策略:也许只更新屏幕上可见的div?