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

时间:2013-05-19 16:49:14

标签: javascript for-loop settimeout break

如何在for中打破定时循环?我试过'return','break','throw'。似乎没什么用。它只是继续循环。如果我尝试使用标签,我会收到错误:

未捕获的SyntaxError:未定义的标签'breakout'

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);
}

http://jsfiddle.net/hyc8j/1/

4 个答案:

答案 0 :(得分:1)

此函数延迟执行... 2秒后,循环执行其五次迭代。你应该把循环放在回调函数中。

只是问一下,你对此有何意图?

答案 1 :(得分:1)

至于for循环的工作,它的工作原理。试试下面。它的工作原理

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

这是因为setTimeout是异步函数。请参阅链接using setTimeout synchronously in JavaScript

答案 2 :(得分:0)

根据我对你的代码和你的问题的理解,我认为我们不能打破定时循环,并且在你的代码中,如果你想要中断循环,只需在定时循环块之外保留break语句。

如果我错了,请纠正我。

答案 3 :(得分:0)

为你的超时循环命名。

然后这样做

var yourloop = ... 
clearTimeout(yourloop);

你将用这个

打破你的循环超时