我有一些计算量很大的Javascript代码,我想在我的应用程序中运行。我知道我正在与UI线程共享资源,因此我通过将其分成块并使用Angular的$ timeout来一次执行每个小块来使UI非常敏感。这工作正常,除了在Internet Explorer 8中,我始终得到提示“停止运行此脚本?”
我如何理解IE8的“太多脚本”的阈值,以便我可以解决它?我经常将控制权返回到主线程,以使应用程序在其他浏览器中具有响应性和无问题性。我没有任何无限循环情况或任何东西。
答案 0 :(得分:3)
IE8的“慢速脚本”概念基于它执行的操作数量,而不是像其他浏览器那样的任何设定时间段。来自KB175500:
从Internet Explorer 4.0开始......超时不再是基于Windows消息的固定值。 Internet Explorer现在跟踪已执行脚本语句的总数,并在每次启动新脚本时重置该值...
因此,如果你做了很多快速执行的脚本语句,你仍然可以在很短的时间内达到极限。
调试和解决这个问题是减少你在每次迭代时所做的工作量(在你的情况下每次$timeout
调用),直到问题消失为止(遗憾的是,IE8 {{3} } support doesn't)。
答案 1 :(得分:-1)
我没有尝试过,但我建议你不要使用超时,而是发布一个事件并抓住它来处理下一个块等等......希望可以欺骗IE,请告诉我们。