catspeake
2019-07-25 09:50:22
setTimeout的最小毫秒值是多少?我想說var minValue = 0;if ( typeof callback == 'function' ) {
setTimeout( callback, minValue );}當我用JavaScript實現回調函數時這個代碼。但我發現現代瀏覽器和一些舊瀏覽器具有不同的最小超時值。我知道Zero不能是最小值。setTimeout的最小值是多少?現代瀏覽器和一些舊瀏覽器的兼容性問題?
3 回答
冉冉說
TA貢獻1877條經驗 獲得超1個贊
我認為10將是所有瀏覽器中最可靠的最小值,因為我已經看到很多代碼使用它。
事實上,4毫秒是由HTML5規范指定的,并且在2010年及之后發布的瀏覽器中是一致的。在(Firefox 5.0 / Thunderbird 5.0 / SeaMonkey 2.2)之前,嵌套超時的最小超時值為10 ms。
繁花不似錦
TA貢獻1851條經驗 獲得超4個贊
setTimeout最有可能是調用sleep或Sleep系統調用。
實際的機制,包括最小毫秒數,setTimeout是專有的和/或系統相關的,因為它們不在官方的ECMA規范中。這取決于您的Javascript運行時,以及您運行它的系統。鑒于,您的Javascript運行時不會增加大量開銷,最小毫秒數由操作系統和硬件的時間片分辨率決定。最小的“可睡眠”時間通常是系統的調度算法為進程分配另一個時間片所需的時間。
例如,在Windows(XP后)上,睡眠系統調用的文檔顯示:
值為零會導致線程將其時間片的剩余部分放棄到準備運行的任何其他線程。如果沒有其他線程準備好運行,則該函數立即返回,并且線程繼續執行。
這意味著,在一些非常罕見的情況下,當前沒有其他進程在硬件線程上等待運行Javascript運行時進程,它可能會在調用程序完成執行后立即繼續,具體取決于Javascript運行時的方式實施。你可能不會經常觀察到這種情況:)
添加回答
舉報
0/150
提交
取消
