2015-08-25 37 views
-1

當我執行在谷歌瀏覽器控制檯上的一個循環的JavaScript代碼,此頁面上的每個JavaScript事情不工作,因爲我在這循環。 有沒有辦法來對我的腳本無限循環,並繼續有我的網頁工作的罰款? 我是否必須使用某些類型的線程? 謝謝, XavierJavascript和谷歌的Chrome

+0

的你想要做將有助於什麼更好的描述。無限循環通常是一個鎖定資源的大問題,所以我確信這不是你想要的。 – charlietfl

+0

請勿使用無限循環。如果您需要定期完成某些操作,請使用'setInterval':https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval – raduation

+0

非常感謝,這正是我一直在尋找的! – AnonBird

回答

0

不,您的瀏覽器窗口中沒有多個JavaScript線程。

如果您正在執行緊密循環,某些瀏覽器可能因爲JavaScript進程凍結UI而鎖定,或者可能檢測到循環並將其殺死。 Chrome會執行此操作,所以新版本的Internet Explorer也會這樣做。如果瀏覽器不干預,允許用戶終止該腳本的其它方法將被殺死進程或者重新啓動機器。 (嚴格循環示例:while(2+2!==5);

如果要定期執行操作(如動畫),請使用setInterval每隔幾毫秒調用一次函數。你可以通過維護一個簡單的循環計數器來完成循環。

例子:

function blink(el) // millenials won't get this 
 
{ 
 
    el.blink_visible = !el.blink_visible; 
 
    el.style.visibility = el.blink_visible ? 'visible' : 'hidden'; 
 
} 
 

 
var label = document.getElementById('label'); 
 
var delayMs = 500; // delay in milliseconds 
 
setInterval(blink, delayMs, label);
<h1 id='label'>Hello World</h1>

您可以設置毫秒非常低,通常擺脫它,但它取決於你在叫在每次迭代的功能正在做什麼。