防止长时间运行的javascript锁定浏览器

我有JavaScript执行大量的计算以及从DOM读取/写入值。该页面非常庞大,因此通常最终会锁定浏览器长达一分钟(有时更长时间使用IE),CPU占用率为100%。

是否有任何资源可以优化JavaScript以防止这种情况发生(我能找到的是如何关闭Firefox长时间运行的脚本警告)?


湖上湖
浏览 420回答 3
3回答

鸿蒙传说

如果您可以将计算算法转换为可以迭代调用的内容,则可以使用具有短超时值的setTimeout以频繁的间隔释放控制权。例如,像这样......function doCalculation(){&nbsp; &nbsp;//do your thing for a short time&nbsp; &nbsp;//figure out how complete you are&nbsp; &nbsp;var percent_complete=....&nbsp; &nbsp;return percent_complete;}function pump(){&nbsp; &nbsp;var percent_complete=doCalculation();&nbsp; &nbsp;//maybe update a progress meter here!&nbsp; &nbsp;//carry on pumping?&nbsp; &nbsp;if (percent_complete<100)&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; setTimeout(pump, 50);&nbsp; &nbsp;}}//start the calculationpump();

跃然一笑

使用超时。通过将循环的内容放入单独的函数中,并使用超时50左右的setTimeout()调用它们,javascript将产生对线程的控制并在稍后返回,允许UI获得顺便拜访。有一个很好的workthrough 这里。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript