繁体   English   中英

如何在循环外时中断

[英]How to break while loop outside it

这不是常见的情况,但是有什么误用呢?

var t = true;

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

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

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

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

JavaScript是单线程的; 当您使用while( while (t) { ... } )阻塞主事件循环时,不会调用setTimeout回调。

如果您正在浏览器中运行代码,则除了以其他方式编写代码外,您无能为力。

可以使用Promises Pattern而不是阻塞主事件循环。

如果您在诸如node类的代码中运行代码,则可以使用本机模块,从而使您能够创建线程(例如threads_a_gogo

因为while循环永远不会退出,所以同步执行某些操作时,您的其他代码将永远不会运行。 对您来说,最好的选择是不使用while循环,而使用诸如setTimeout这样的重复事件,并让超时在完成时自行运行。 这样,您就不会创建封闭的环境。

因为javascript不是多线程的,所以它不起作用-直到您当前的执行线程结束(并且只要您正在运行while循环,它就不会执行),没有其他代码被执行(没有超时调用),并且UI冻结(按钮单击将不响应)。

也许可以使用html5中的新Web Workers功能执行类似的操作,但是到目前为止,我还不能确定。

您可以使用带有中断条件的标签,例如external:while(){//编码if()break external; }

暂无
暂无

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

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