如何打破它外面的循环

时间:2013-03-30 07:12:27

标签: javascript while-loop

这不是常见的情况,但滥用它的原因是什么?

var t = true;

setTimeout(function(){
    t=false;
},1000);

while(t){
    //loop...
    //if t==false, break loop.
}

另一个条件,它也会导致无限循环:

button.onlcick = function(){
    t = false;
}

4 个答案:

答案 0 :(得分:3)

JavaScript是单线程的;使用while {({1}})阻止主事件循环时,将不会调用setTimeout回调。

如果您在浏览器中运行代码,除了以其他方式编写代码之外,您无法真正做任何事情;

您可以使用Promises Pattern

,而不是阻止主事件循环

如果您使用while (t) { ... }之类的代码运行代码,则可以使用本机模块,从而可以创建线程(如threads_a_gogo。)

答案 1 :(得分:2)

因为while循环永不退出,所以当同步完成某些操作时,您的其他代码永远不会运行。我给你的最好的报价是不要使用while循环而是有一个周期性的事件,比如setTimeout,并在完成后让超时运行。 这样您就不会创建一个封闭的环境。

答案 2 :(得分:1)

它不起作用,因为javascript不是多线程的 - 直到你当前的执行线程结束(并且只要你运行你的while循环就不会这样),没有其他代码被执行(没有超时调用)和用户界面被冻结(按钮点击不会响应)。

使用html5中的新Web Workers功能,可能可以做类似的事情,但截至目前我无法确切地说出来。

答案 3 :(得分:0)

您可以使用具有中断条件的标签     外:当()     {     //码     如果()     打破外面;     }