[英]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.