這個循環不是一種常見的疾病,但什麼是它的濫用?如何打破,而外面
var t = true;
setTimeout(function(){
t=false;
},1000);
while(t){
//loop...
//if t==false, break loop.
}
另一個條件,它會導致無限循環太:
button.onlcick = function(){
t = false;
}
這個循環不是一種常見的疾病,但什麼是它的濫用?如何打破,而外面
var t = true;
setTimeout(function(){
t=false;
},1000);
while(t){
//loop...
//if t==false, break loop.
}
另一個條件,它會導致無限循環太:
button.onlcick = function(){
t = false;
}
JavaScript
是單線程; setTimeout
當您阻止主事件循環時,將不會調用回調(while (t) { ... }
)。
如果你正在運行在瀏覽器的代碼,你不能真正做到這件事,但是寫在其他的方式你的代碼什麼;
而是阻塞主事件循環,可以使用Promises Pattern
。
如果你正在運行在類似node
您可以使用本機模塊的代碼,使您能夠創建線程(如threads_a_gogo
)
明白了,謝謝〜 – Sho
可以使用與休息狀態的標籤就像 外:而(){ // 代碼 如果() 休息外; }
由於while循環不退出,當事情是同步完成的其它代碼永遠不會運行。我最好的提議是不使用while循環,而是使用setTimeout等週期性事件,並在完成時使超時運行。 這樣你就不會創建一個封閉的環境。
它不會起作用,因爲JavaScript是不是多線程 - 直至目前的執行結束的線程(它不會,只要你運行你的while循環),不執行其他代碼(無超時調用)並且UI被凍結(按鈕點擊不會響應)。
There 可能是一種在html5中使用新的Web Workers功能執行此類操作的方法,但截至目前,我無法確定。
第一vertion並不保證下,工作。由於JavaScript定時器不保證。但第二個應該工作。在糾正您的拼寫錯誤後,您遇到的問題與我之前提到的同行相似 – 2013-03-30 07:22:52
這不常見,因爲它會凍結瀏覽器。 – RobG
@silentboy 他們不工作,都凍結瀏覽器。 我想知道爲什麼'while'不會中斷window.t = false? – Sho