我有一个需要在所有浏览器中运行的循环执行。
在chrome / ff等中执行运行得很快。在IE中它很慢并且最终发出一个提示,说脚本运行缓慢(不好)。
有关如何绕过这样的事情的任何想法?我大多只需要摆脱7/8的IE提示
**编辑**
这是代码:
if(this.handicap()) {
while(this.hasGraphChanged()) {
this.gravity(this.separate());
}
}
这是一个非常大的项目,所以我不会列出所有代码,而是会快速解释。
this.handicap:如果浏览器是IE7 / 8,则返回true this.hasChanged:返回true / false,具体取决于绘制更新后是否有更改 this.gravity:基于p1(数组)处理绘制算法
答案 0 :(得分:2)
您可以使用一些异步迭代技术而不是循环。观看Pedro Teixeira的Asynchronous Iteration Patterns作为一个很好的介绍。它使用Node.js,但您可以在浏览器中使用相同的模式。
答案 1 :(得分:0)
循环到底是做什么的?迭代次数是否确定?如果这是导致浏览器挂起的问题,您可能需要考虑javascript worker-threads https://developer.mozilla.org/En/Using_web_workers(虽然我不确定哪些浏览器目前支持此功能)。