2、計時器最小延時時間和可靠性
很明顯,你可以延遲幾秒鐘、幾分鐘、幾小時或任何你你想要的時間間隔,但最不明顯的是你能選擇的最小延時時間。
在一定程度上,瀏覽器不能為計時器提供良好的解決方案用以精確的處理它們(因為它們自身受操作系統(tǒng)時間的限制)。但是,縱觀所有的瀏覽器,可以很安全的說,最小延時時間大約是10-15ms。
我們可以對跨平臺假定的計時器間歇作簡單的分析后得出這一結(jié)論。例如,如果我們分析延遲時間為0ms的setInterval,我們會發(fā)現(xiàn)在大多數(shù)瀏覽器中的最小延遲時間。
在OS操作系統(tǒng)下的瀏覽器中:
從左上角開始,依次為:Firefox 2, Safari 3, Firefox 3, Opera 9
在Windows操作系統(tǒng)下得瀏覽器中:
從左上角開始依次為:Firefox 2, Internet Explorer 6, Firefox 3, Opera 9
上面圖表中的線條和數(shù)字顯示了瀏覽器同時處理時間間歇的數(shù)量,我們可以得出結(jié)論:在OS上,瀏覽器的最小延時時間為10ms,在windows上為15ms。我們可以通過為計時器提供0(或任何10ms以下的任何數(shù)值)作為延時時間得到這個值。
但有一個例外,IE為setInterval提供德爾延時時間不能為0(即使setTimeou能欣然的接受)。當setInterval的延時時間為0時,它會轉(zhuǎn)變成setTimeout(僅執(zhí)行一次回調(diào)函數(shù)),而我們可以通過為其提供1ms的延遲來解決這個問題。由于所有瀏覽器都能自動向上舍入任何低于最小延時時間的值,所以用1ms與有效的使用0ms一樣安全,或更安全(既然IE瀏覽器現(xiàn)在能工作)。
從這些表中我們可以得到其它信息。最重要的是加強了我們以前所了解到的:瀏覽器不能保證你所指定的精確的時間間歇。像Firefox 2,Opera 9(OS)在提供可靠的執(zhí)行率方面有一定的難度。很多與瀏覽器如何處理Javascript的垃圾回收有關(Firefox 3在Javascript的執(zhí)行上作了顯著的改善,其垃圾回收在這些結(jié)果中立竿見影)。
因此,瀏覽器可以提供非常小的延遲時間,但其精確度得不到保證,那么在使用計時器時,你需要考慮你的應用程序(如果10ms和15ms有差異,你應該重新思考你應用程序代碼的結(jié)構(gòu))。
下一篇:解讀javascript的計時器 II
本文鏈接:http://www.95time.cn/tech/web/2009/6951.asp
出處:
責任編輯:bluehearts
上一頁 解讀javascript的計時器 [2] 下一頁
◎進入論壇網(wǎng)頁制作、WEB標準化版塊參加討論,我還想發(fā)表評論。
|