javascript - 在 Google Chrome 中设置 JavaScript 超时限制

标签 javascript google-chrome

是否可以增加 JavaScript 的超时限制?

如果我有一个执行时间超过 20/30 秒的脚本,chrome 将弹出不响应的页面对话框。

制作更高效的脚本对我没有帮助,因为脚本有时需要迭代一个函数一百万或十亿次

最佳答案

在步骤/ block 上拆分函数并在 setInterval(function(){}) 中运行它们。 这样页面就会响应,您将能够通知用户有关执行进度的信息,您就可以完成工作。

更新:这是一个简单的函数 worker 函数执行每次迭代, chunksz - 在单个 block 中运行的迭代次数 maxit - 总迭代次数。

function task(worker, chunksz, maxit)
{
  var idx = 0;
  var xint = null;
  function exec_chunk() 
  {
     for(var n = 0; n < chunksz; ++n)
     {
       if(idx >= maxit) { return; }
       worker(idx++);
     }
     setTimeout(exec_chunk,1);
  }
  exec_chunk();
}

这是一个例子:http://jsfiddle.net/Ed9wL/ 如您所见,您按顺序获得了所有迭代。

更新 2:

假设你有一个循环:

 for(var i=0; i<100000; ++i) { ... do something ... }

然后您需要将循环体包装到一个函数中,并像这样调用上面的task:

task(function(i){ ... do something ... },100, 100000);

或者像这样:

function loopBody(i){ ... do something ... }
task(loopBody,100, 100000);

关于javascript - 在 Google Chrome 中设置 JavaScript 超时限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6336844/

相关文章:

javascript - 检查 Cookie 是否已设置安全标志并仅使用 JavaScript 进行更新

javascript - 复选框选中所有选项

javascript - HTML5 删除 Canvas 中先前绘制的对象

javascript - 在jsfiddle中取消无限循环执行

html - 输入类型 ="file",在 chrome 中点击取消后清除文件

google-chrome - 内容安全策略 : Chrome logs connect-src error for image resource

javascript - 如何使用 Backbone 填充子集合?

javascript - 覆盖 stub 的函数

javascript - Chrome 扩展上下文菜单 : how to append div to page after clicking menu item

javascript - 是否有解决方法允许内容/背景脚本在 Chrome 网上应用店中打开时执行?