2013-09-24 70 views
-1

我有一個小腳本...JavaScript的資源,同時在循環

var foo = function(){ 
    ... Some stuff here ... 

    setTimeout(foo, 1); 
} 
foo(); 

所以基本上我問富一旦它完成了給它1個毫秒突破調用自身,

因此,這將運行幾乎永遠,直到刷新瀏覽器等等

問:

我想避免鋪天蓋地的瀏覽器或導致崩潰這是一個壞主意,或者有什麼我需要考慮,以避免任何崩潰?

這個想法只是貫穿自己,等待發生的事情然後做點什麼。

+0

這將不會繼續運行該函數,它會在ms後運行一次(您可能想要'setInterval') - 無論哪種方式,在永久運行這個函數時可能是個壞主意。你的總體目標是什麼? – tymeJV

+0

這不是一個不常見的做法,但是你真的需要1ms嗎?大多數瀏覽器不會在4ms以下運行,大多數用戶不會注意到100ms的操作延遲。 – rlemon

+0

它會,如果你打電話給foo()一次...對不起,我會把它放在... – Val

回答

1

我想說你有這麼多的缺點。這是基本模式,儘管您可能希望首先執行一次。 ;-)

(function(){ 
    var foo = function(){ 
    setTimeout(foo, 1e3); 
    }(); 
})(); 

雖然我懷疑它會執行每1ms(不管你正在做不必須時候,可以嗎?)。如果這是從服務器測試某些東西,請查看使用長輪詢。如果您在瀏覽器中檢查更改,請查看綁定到特定事件並且不要經常檢查增量。

+0

'1e3'是不是一個非常大的數字? – Val

+0

1(帶)3(小數點右移),所以1000. – rlemon

+0

哦,這是我的消息:)我認爲這會做現在,直到我稍後再做更多的挖掘。 – Val