2014-05-03 28 views
0

我有這個功能:請問javascript循環會讓我的頁面最終卡住嗎?

<script language="javascript"> 
function live(){ 
    var d = $live; 
    var elm = document.getElementById("live"); 
    if(d==1){ 
     elm.style.display = 'block'; 
    } else{ 
     elm.style.display = 'none'; 
    }  
} 
</script> 

setInterval(function(){live();},10000); 

和IM只是關心我的網頁卡住讓它在瀏覽器中打開了一會兒或者導致用戶的瀏覽器停止響應或類似的東西了。使用這樣的循環有多安全?

這是谷歌或Facebook用來實時顯示其網頁上的新通知提醒嗎?這似乎相當順利。

謝謝。

+1

這不是一個真正的「循環」,也不會讓你的頁面「卡住」。 – Pointy

+0

稍微偏離主題,但可以將該代碼縮減爲'setInterval(live,10000);' –

+0

感謝您的建議。 – Nuker

回答

1

這不是傳統意義上的循環,它實際上只是一個定期調用的函數,所以您在這裏清楚了。請注意,每次執行時都不會增加內存使用量,因爲這很可能會導致用戶的瀏覽器死機。

此外,setInterval需要我在腳本標記中,否則它會顯示在您的頁面上。

+0

是的,它位於我的實際頁面上的腳本標記內。爲了簡單起見,我在此省略。但那麼我的功能是否完全安全? – Nuker

+0

是的,即使它執行了10億次,也沒有任何問題會引起任何問題。 – ThoolooExpress

+0

謝謝!那是一種解脫。 – Nuker

0

使用setInterval是在網站上顯示通知的常用操作。它不會掛起你的頁面,儘管你必須在不再需要時清除間隔。假設您已經顯示通知,那麼最好保留setInterval的引用,以便稍後清除它。

var ref = setInterval(fn, 100); 
clearInterval(ref);