在Google Chrome中设置JavaScript超时限制

Tyi*_*ilo 8 javascript google-chrome

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

如果我的脚本执行时间超过20/30秒,则会弹出不带负责的页面对话框.

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

c-s*_*ile 6

在step/chunk上拆分功能并在里面运行setInterval(function(){}).这种方式页面将响应,您将能够通知用户执行的进度,您将完成工作.

更新:这是一个简单的函数,它接受 worker函数执行每次迭代, chunksz- 在单个块中运行的迭代次数 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();
}
Run Code Online (Sandbox Code Playgroud)

这是一个例子:http://jsfiddle.net/Ed9wL/ 如你所见,你按顺序完成所有迭代.

更新2:

假设你有一个循环:

 for(var i=0; i<100000; ++i) { ... do something ... }
Run Code Online (Sandbox Code Playgroud)

那么你需要将循环体包装成一个函数并task用它调用上面的代码:

task(function(i){ ... do something ... },100, 100000);
Run Code Online (Sandbox Code Playgroud)

或者像这样:

function loopBody(i){ ... do something ... }
task(loopBody,100, 100000);
Run Code Online (Sandbox Code Playgroud)