从计时循环内部中断javascript执行

从计时循环内部中断javascript执行,javascript,for-loop,settimeout,break,Javascript,For Loop,Settimeout,Break,如何在for中中断定时循环?我试过“返回”、“中断”、“抛出”。似乎什么都不管用。它只是继续循环。如果尝试使用标签,则会出现错误: 未捕获的合成错误:未定义的标签“突破” var r=0; breakout: for(i=0;i<5;i++) { setTimeout(function() { if(r) { alert("works"); } else { throw new Error(alert("error")); br

如何在for中中断定时循环?我试过“返回”、“中断”、“抛出”。似乎什么都不管用。它只是继续循环。如果尝试使用标签,则会出现错误:

未捕获的合成错误:未定义的标签“突破”

var r=0;
breakout:
for(i=0;i<5;i++) {
  setTimeout(function() {
    if(r) {
       alert("works");
    } else {
       throw new Error(alert("error"));
       break breakout;
    }
  }, 2000);
}
var r=0;
突破:

对于(i=0;i此函数有一个执行延迟…2秒后,循环已经执行了五次迭代。您应该将循环放在回调函数中


我只是想问一下,你的意图是什么?

就“内部断开”循环的工作而言,它是有效的。试试下面,它是有效的

for (i=0;i<10;i++)
  {
  if (i==3)
    {
  alert("Got break");
    break;
    }
  alert("did not break");
  }

for(i=0;i根据我对你的代码和你的问题的理解,我认为我们不能中断定时循环,在你的代码中,如果你想中断for循环,只需将break语句保持在定时循环块之外


如果我错了,请更正。

请为超时循环命名

那就这样做吧

var yourloop = ... 
clearTimeout(yourloop);

你将用这个

打破你的循环超时。这只是我正在做的一个例子。实际上,我有3个for循环和一个if循环来检查一个条件,如果该条件为false,则执行一些计时函数。你需要理解
setTimeout
是异步的,这就是为什么它不起作用。如果你需要重复一个n多次执行函数时,应使用
setInterval
代替
setTimeout
和循环。