如何退出JavaScript中无限循环的循环?

时间:2011-09-30 20:26:32

标签: javascript loops

是否可以阻止无限循环运行?

现在我正在做这样的事情:

var run = true;

loop ({
  if(run) {
  whatever
  }
}, 30),

然后当我想要停止时,我将run更改为false,并在我想再次启动时更改为true

但循环始终在运行。它只是没有在里面执行代码。

有没有办法完全阻止它?并在我想要的时候重新开始?

6 个答案:

答案 0 :(得分:5)

如果我正确理解您的问题,您需要的是break关键字。 Here就是一个例子。

答案 1 :(得分:1)

SetInterval将为您提供一个可以取消的循环。

setInterval ( "doSomething()", 5000 );

function doSomething ( )
{
  // (do something here)
}

将间隔设置为较小的值并使用clearinterval取消它

答案 2 :(得分:0)

function infiniteLoop() {
    run=true;
    while(run==true) {
        //Do stuff
        if(change_happened) {
            run=false;
        }
    }
}
infiniteLoop();

答案 3 :(得分:0)

可能不是您正在寻找的,但您可以尝试setInterval

var intervalId = setInterval(myFunc,0);

function myFun() {
    if(condition) {
        clearInverval(intervalId);
    }
    ...
}

setInterval也不会阻止页面。您可以清除clearInterval所示的时间间隔。

答案 4 :(得分:0)

使用while循环

while(run){
    //loop guts
}

run为假时,循环退出。把它放在一个函数中,当你想再次开始循环时调用它。

答案 5 :(得分:0)

问题是javascript只有一个线程可以运行。这意味着当你无限循环时,没有别的事情可以发生。因此,您的变量不可能永远改变。

对此的一个解决方案是使用setTimeout循环,传递给它的时间非常短。例如:

function doStuff(){
   if(someFlag){
      // do something
   }

   setTimeout(doStuff,1);
}

doStuff();

这将使其他操作可以使用该线程并可能更改标志。