JS脚本是否有时间限制在浏览器控制台或FireBug控制台上运行?

时间:2013-12-10 00:09:37

标签: javascript firefox firebug

我正在使用firebug控制台来测试脚本...... 在我的脚本开头,我有一个关于我希望脚本运行的次数的选项!

我的问题是:

  • 如果我输了一个大数字,脚本会在一段时间后停止,而不会完成!

注释:

  • 如果我不到10次,它总是运行!
  • 如果我放了20次,有时它会跑'直到最后,有时它不会!
  • 如果我放了20多次,它永远不会正常结束!
  • 每次运行,需要1到6分钟......
  • 我检查了代码,逻辑接缝确定
  • 它运行!它做的一切!只是不超过20次...我需要它运行远远超过:\

代码示例:

var x = prompt("How many times should this script be runned?");
alert("It will be runned " + x + " times then!");

function doThis() {
    setTimeout(function(){
        ...;
        ++n;
        --x;
        action();
    },65000);
}

function doThat() {
    setTimeout(function(){
        ...;
        ++n;
        --x;
        action();
    },65000);
}

function action() {
    if(x>0) {

        if(...) {
            if(n<6){                
            doThis();
            }
            } else  {
            if(n<6){                
            doThat();
            }
        }
    } else {
        alert("The Script has ended!");
    }

action();

1 个答案:

答案 0 :(得分:1)

是的,今天的大多数浏览器都有时间限制脚本在将控制权返回给用户之前可以运行多长时间。这是为了防止错误或不正常的脚本被挂起来#34;那个浏览器窗口。

通常可以通过在运行之间放置一个较小的计时器来解决它。这使浏览器有机会为它的事件循环提供服务,并防止提示运行太长时间。

我拍的大量工作时间不超过10秒左右,这远低于所有浏览器的门槛。以下是一些以前的答案,将您的工作分成由短暂的定时器间隔分隔的块,这样事情基本上可以永远运行。

Best way to iterate over an array without blocking the UI

Avoiding "Unresponsive Script" message in a foreach loop

Best way to iterate over an array without blocking the UI