[討論] JS 時間計算常見問題

作者: TonyQ (自立而後立人。)   2014-05-23 19:09:33
簡易 js 考題(申論題)
http://jsfiddle.net/JR5Xk/1/
如果你看到這個範例跟這個程式碼,
說不出為什麼這樣計算時間是「有嚴重問題的」,
我會覺得你的 JS 基礎還有需要加強......
1.setInterval(or setTimeout) 跑的時間差不是精準的如你設定
2.browser focus 與否 可能會影響 setInterval 的行為
推薦解法是用先後時間的毫秒數差計算差異時間,
而不是按照被跑幾次來推斷時間。
如此例
http://jsfiddle.net/JR5Xk/3/
其實這是很基本的觀念,
但普遍看到實作出來的碼表或倒數都常常有這個問題,
所以只好再撰文呼籲一次...
作者: s25g5d4 (function(){})()   2014-05-23 20:46:00
requestAnimationFrame
作者: s25g5d4 (function(){})()   2014-05-23 20:50:00
最近剛好在看 canvas 如何做動畫
作者: s25g5d4 (function(){})()   2014-05-23 20:53:00
作者: danny8376 (釣到一隻猴子@_@)   2014-05-23 21:12:00
那是給動畫用的純計算時間的話 用performance
作者: danny8376 (釣到一隻猴子@_@)   2014-05-23 21:14:00
不過要是瀏覽器不支援還只是能用Date當fallback就是
作者: s25g5d4 (function(){})()   2014-05-23 21:19:00
我就是剛好在做動畫阿 XD
作者: bndan (seed)   2014-05-26 11:59:00
S大 那個東西跟時間有關的 只適算FPS = =" 要逆向過來會卡在你沒辦法肯定下一秒的FPS應該是多少...(雞生蛋蛋生雞問題)
作者: danny8376 (釣到一隻猴子@_@)   2014-05-26 17:14:00
樓上在說啥...
作者: s25g5d4 (function(){})()   2014-05-26 18:34:00
我知道 只是剛好我在看所以提出來而已 最後附上的網址有很多種計算時間的方法 例如 performance.now()但是要做好 fallback 就是了
作者: danny8376 (釣到一隻猴子@_@)   2014-05-26 18:36:00
其實requestAnimationFrame都需要fallback了www
作者: s25g5d4 (function(){})()   2014-05-26 18:37:00
通通都要 fallback 而且 Server-side 又有另一套寫法 (倒

Links booklink

Contact Us: admin [ a t ] ucptt.com