-1
當我執行在谷歌瀏覽器控制檯上的一個循環的JavaScript代碼,此頁面上的每個JavaScript事情不工作,因爲我在這循環。 有沒有辦法來對我的腳本無限循環,並繼續有我的網頁工作的罰款? 我是否必須使用某些類型的線程? 謝謝, XavierJavascript和谷歌的Chrome
當我執行在谷歌瀏覽器控制檯上的一個循環的JavaScript代碼,此頁面上的每個JavaScript事情不工作,因爲我在這循環。 有沒有辦法來對我的腳本無限循環,並繼續有我的網頁工作的罰款? 我是否必須使用某些類型的線程? 謝謝, XavierJavascript和谷歌的Chrome
不,您的瀏覽器窗口中沒有多個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>
您可以設置毫秒非常低,通常擺脫它,但它取決於你在叫在每次迭代的功能正在做什麼。
的你想要做將有助於什麼更好的描述。無限循環通常是一個鎖定資源的大問題,所以我確信這不是你想要的。 – charlietfl
請勿使用無限循環。如果您需要定期完成某些操作,請使用'setInterval':https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval – raduation
非常感謝,這正是我一直在尋找的! – AnonBird