1

我的一个页面上运行了一个非常大的 JavaScript for 循环。它是如此之大,以至于在旧版本中导致 IE 弹出窗口显示如下内容:“此页面的脚本使其运行缓慢,您要终止它吗?”

我相信我已经尽可能地优化了它,所以现在我正在寻找替代方法来做到这一点。

我想知道创建一个运行前 100 次迭代、然后是第二个 100 次迭代、然后是第三个等等直到所有迭代都完成的间隔对我是否有益?这会阻止 IE 弹出窗口声称脚本运行太慢吗?

4

3 回答 3

0

Javascript 是单线程的,所以这是主要障碍。

如果您想执行大量计算,最好使用Workers,但是这些仅受现代浏览器支持。这样您的计算就不会减慢应该在主线程中的 UI。这是构建桌面应用程序时的常见做法。

如果您不介意花费比应有的时间更长的时间,那么拆分计算可能是一个好主意。如果您的时间正确,那应该可以防止弹出窗口出现。

您或许还应该重新考虑在客户端执行这么多计算的需要。

于 2013-04-05T09:48:08.963 回答
0

你可以使用这个:多线程。它不是真正的多线程,它只是在玩定时器。它将阻止弹出窗口。但我不确定在这种情况下是否有必要,除非你正在制作一款完整的游戏。

于 2013-04-05T09:49:50.447 回答
0

只要您的代码没有足够快地将控制权交还给浏览器的主事件处理循环,就会出现“脚本太长”的浏览器弹出窗口。

按照您在问题中的建议使用setTimeout批量触发您的计算确实会阻止弹出窗口出现。

定期返回事件循环还将允许浏览器保持对其他 UI 事件的响应 - 您可以(例如)提供“取消”按钮。我建议您尝试至少每秒屈服一次,如果不是比这更频繁的话。

于 2013-04-05T09:57:08.040 回答