是否可以增加 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/