3

我有一些计算量很大的 Javascript 代码,我想在我的应用程序中运行它们。我知道我正在与 UI 线程共享资源,因此我通过将 UI 分成块并使用 Angular 的 $timeout 一次执行每个小块来使 UI 响应迅速。这工作正常,除了在 Internet Explorer 8 中,我一直得到提示“停止运行此脚本?”

我如何理解 IE8 的“脚本过多”阈值以便我可以解决它?我经常将控制权返回给主线程,以使应用程序能够在其他浏览器中响应且无问题。我没有任何无限循环情况或任何东西。

4

2 回答 2

3

IE8 的“慢速脚本”概念是基于它执行的操作数量,而不是像其他一些浏览器那样的任何设定时间段。从KB175500 开始

从 Internet Explorer 4.0 开始...超时不再是基于 Windows 消息的固定值。Internet Explorer 现在跟踪已执行脚本语句的总数,并在每次启动新脚本执行时重置该值...

所以如果你做了很多快速执行的脚本语句,你仍然可以在很短的时间内达到极限。

调试和解决这个问题是减少您在每次迭代($timeout在您的情况下是每次调用)中所做的工作量,直到问题消失(因为,遗憾的是,IE8支持网络工作者)。

于 2013-08-21T20:08:34.810 回答
-1

我没有尝试过,但我建议不要使用超时,而是发布一个事件并捕获它以处理下一个块等......希望可以欺骗 IE,请让我们知道。

于 2013-08-21T20:05:24.377 回答