Tyi*_*ilo 8 javascript google-chrome
是否有可能增加JavaScript的超时限制?
如果我的脚本执行时间超过20/30秒,则会弹出不带负责的页面对话框.
制作更高效的脚本对我没有帮助,因为脚本有时需要迭代一个函数一百万次或十亿次
在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)
| 归档时间: |
|
| 查看次数: |
12633 次 |
| 最近记录: |