作者TonyQ (自立而後立人)
看板Ajax
标题[讨论] JS 时间计算常见问题
时间Fri May 23 19:09:33 2014
简易 js 考题(申论题)
http://jsfiddle.net/JR5Xk/1/
如果你看到这个范例跟这个程式码,
说不出为什麽这样计算时间是「有严重问题的」,
我会觉得你的 JS 基础还有需要加强......
1.setInterval(or setTimeout) 跑的时间差不是精准的如你设定
2.browser focus 与否 可能会影响 setInterval 的行为
推荐解法是用先後时间的毫秒数差计算差异时间,
而不是按照被跑几次来推断时间。
如此例
http://jsfiddle.net/JR5Xk/3/
其实这是很基本的观念,
但普遍看到实作出来的码表或倒数都常常有这个问题,
所以只好再撰文呼吁一次...
--
网页上拉近距离的帮手 实现 GMail丰富应用的功臣
数也数不清的友善使用者体验 这就是javascript
欢迎同好到 AJAX 板一同讨论。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.230.48.81
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Ajax/M.1400843375.A.F83.html
1F:→ s25g5d4:requestAnimationFrame 05/23 20:46
2F:推 s25g5d4:最近刚好在看 canvas 如何做动画 05/23 20:50
4F:→ danny8376:那是给动画用的 05/23 21:12
5F:→ danny8376:纯计算时间的话 用performance 05/23 21:12
6F:→ danny8376:不过要是浏览器不支援还只是能用Date当fallback就是 05/23 21:14
7F:推 s25g5d4:我就是刚好在做动画阿 XD 05/23 21:19
8F:→ bndan:S大 那个东西跟时间有关的 只适算FPS = =" 要逆向过来会卡在 05/26 11:59
9F:→ bndan:你没办法肯定下一秒的FPS应该是多少...(鸡生蛋蛋生鸡问题) 05/26 11:59
10F:→ danny8376:楼上在说啥... 05/26 17:14
11F:推 s25g5d4:我知道 只是刚好我在看所以提出来而已 最後附上的网址 05/26 18:34
12F:→ s25g5d4:有很多种计算时间的方法 例如 performance.now() 05/26 18:34
13F:→ s25g5d4:但是要做好 fallback 就是了 05/26 18:34
14F:→ danny8376:其实requestAnimationFrame都需要fallback了www 05/26 18:36
15F:推 s25g5d4:通通都要 fallback 而且 Server-side 又有另一套写法 (倒 05/26 18:37