Javascript 是不是;“设置间隔”;对浏览器行为有影响吗?
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: '
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?