2013-07-06 58 views
0

的有在JS,我可以使用休眠時間在microsecnanosecsetTimeout(callback,sleep_time_in_millisec) API的任何替代;替代的setTimeout(代碼,毫秒)API

setTimeout(callback,sleep_time_in_millisec)本身是多精確到sleep_time_in_millisec處理浮點值?

+1

最好的一些瀏覽器會做的是以大約15ms的增量進行響應,因此設置微或毫微秒值是沒有意義的。另外,實際上沒有任何setTimeout標準(它在[HTML5](http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#timers)中,但只是真的記錄當前行爲),因此如果要求精度或準確度,則不是特別可靠。 – RobG

+0

@RobG,感謝您的回覆,可能最小值爲15毫秒或10毫秒;但我想讓它睡30.5589毫秒;不是30毫秒或31毫秒...... –

+0

注意我寫**約15ms增量**,而不是*最小值*,所以你想要做的事情是不可能的,通用的JavaScript實現。 – RobG

回答

4

有沒有這樣的API和setTimeout不會與浮點值的工作。事實上,setTimeout提供不保證您的回調將在指定的時間已經過去,但被調用,只有當至少不亞於作爲指定的時間已經過去(它可能在一小時後調用回調和仍然將按照確定是到API規範)。

又見What is minimum millisecond value of setTimeout?

如果你正在編寫時間要求嚴格的代碼,JavaScript是錯誤的語言做進去。

+0

感謝您的回覆,是的,我的代碼對時間至關重要;我正在爲瀏覽器編寫它;如果javascript不是我的項目的好語言,那麼你的建議是什麼?我應該選擇哪種語言? –

+1

@Swarnendu:嗯,這將需要一個基於原生技術(的ActiveX,Java小程序,或Chrome [本機客戶端](https://developers.google.com/native-client/))。除Java之外,這些當然不是跨瀏覽器的。但我的經驗法則建議是「只是不要在瀏覽器中做這件事」。 – Jon

+0

那麼這不是語言限制,'setTimeout'甚至不是語言的一部分。如果在瀏覽器中需要這些設施,那麼您應該要求他/做你的案子。稍微相關的是[高分辨率時間API](http://www.w3.org/TR/hr-time/)。 – Esailija

0

你有沒有嘗試在使用setInterval(回調,sleep_time_in_millisec)和clearinterval在javascript

+0

'setInterval'在sleep_time_in_millisec中處理'float value'嗎? –

+0

你能請參閱此鏈接http://stackoverflow.com/questions/8468790/is-it-safe-to-pass-setinterval-or-settimeout-a-fractional-delay。我認爲它可能對你有幫助。 – AbnSrn