JavaScript的最长执行时间

And*_*ang 10 javascript timeout

我知道ie和firefox都有javascript执行限制(Source 1,Source 2).根据执行的语句数量,我听说它在IE中的某个地方有500万,基于firefox中的秒数:默认情况下我的版本是10秒.

我没有得到的是案例将超过这些限制:

  1. 我确信一个巨大的循环将超过执行时间的限制

  2. 但是一个事件处理者会超过限制,如果它本身的执行时间低于限制但是如果它发生多次?

例:

假设我的页面上有一个计时器,每20秒执行一次javascript.计时器处理程序的执行时间为1秒.firefox和ie分别处理定时器函数的每个调用,所以它永远不会超过限制,或者是firefox /即加起来每个调用的时间所以在处理程序完成后,所以在我的网站上200秒后(与定时器调用10次)即使定时器处理程序本身只有1秒长,也会发生错误?

Dan*_*llo 8

Nicholas C. Zakas的以下文章讨论了不同浏览器如何以及何时中断长时间运行的JavaScript代码:

将长处理代码分解成小块并用定时器启动它实际上是解决这个问题的一种方法.以下Stack Overflow帖子提出了解决此问题的方法:

另一方面,Web worker更适合长时间运行的处理,因为它们的执行发生在一个单独的进程中,因此不会阻止UI线程:

但是,Internet Explorer中不支持Web工作者,并且他们无法访问DOM.


Yan*_*min 1

事件处理程序被视为新的执行上下文 - 时间限制被重置。

如果您需要进行更多计算,请查看 WebWorkers。