繁体   English   中英

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

[英]break javascript execution from inside timed loop

如何在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/

这个函数延迟执行... 2秒后,循环执行了五次迭代。 你应该将循环放在回调函数中。

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

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

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

它发生的原因是setTimeout是异步函数。 在JavaScript中查看使用setTimeout同步的链接

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

如果我错了,请纠正我。

给你的超时循环命名。

然后这样做

var yourloop = ... 
clearTimeout(yourloop);

你将用这个来打破你的循环超时

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM