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

发布于 2021-02-02 17:14:10

我有JavaScript,它可以执行大量计算以及从DOM中读取/写入值。该页面很大,因此通常会阻塞浏览器长达一分钟的时间(有时使用IE会更长),并且CPU使用率达到100%。

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

关注者
0
被浏览
390
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    如果您可以将计算算法转换为可迭代调用的内容,则可以使用具有短超时值的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();
    


推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看