我有JavaScript执行大量的计算以及从DOM读取/写入值。该页面非常庞大,因此通常最终会锁定浏览器长达一分钟(有时更长时间使用IE),CPU占用率为100%。是否有任何资源可以优化JavaScript以防止这种情况发生(我能找到的是如何关闭Firefox长时间运行的脚本警告)?
3 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
如果您可以将计算算法转换为可以迭代调用的内容,则可以使用具有短超时值的setTimeout以频繁的间隔释放控制权。
例如,像这样......
function doCalculation()
{
//do your thing for a short time
//figure out how complete you are
var percent_complete=....
return percent_complete;
}
function pump()
{
var percent_complete=doCalculation();
//maybe update a progress meter here!
//carry on pumping?
if (percent_complete<100)
{
setTimeout(pump, 50);
}
}
//start the calculation
pump();
跃然一笑
TA贡献1826条经验 获得超6个赞
使用超时。
通过将循环的内容放入单独的函数中,并使用超时50左右的setTimeout()调用它们,javascript将产生对线程的控制并在稍后返回,允许UI获得顺便拜访。
有一个很好的workthrough 这里。
添加回答
举报
0/150
提交
取消