是否可以阻止无限循环运行?
现在我正在做这样的事情:
var run = true;
loop ({
if(run) {
whatever
}
}, 30),
然后当我想要停止时,我将run
更改为false
,并在我想再次启动时更改为true
。
但循环始终在运行。它只是没有在里面执行代码。
有没有办法完全阻止它?并在我想要的时候重新开始?
答案 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();
这将使其他操作可以使用该线程并可能更改标志。