为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

湖上湖 2019-09-02 17:01:58
我有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();


查看完整回答
反对 回复 2019-09-02
?
跃然一笑

TA贡献1826条经验 获得超6个赞

使用超时。


通过将循环的内容放入单独的函数中,并使用超时50左右的setTimeout()调用它们,javascript将产生对线程的控制并在稍后返回,允许UI获得顺便拜访。


有一个很好的workthrough 这里。


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 419 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信