[讨论] 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