Re: [讨论] JS 时间计算常见问题

楼主: bndan (seed)   2014-05-27 11:29:34
※ 引述《TonyQ (自立而后立人)》之铭言:
: 简易 js 考题(申论题)
: http://jsfiddle.net/JR5Xk/1/
: 如果你看到这个范例跟这个程式码,
: 说不出为什么这样计算时间是“有严重问题的”,
: 我会觉得你的 JS 基础还有需要加强......
: 1.setInterval(or setTimeout) 跑的时间差不是精准的如你设定
: 2.browser focus 与否 可能会影响 setInterval 的行为
: 推荐解法是用先后时间的毫秒数差计算差异时间,
: 而不是按照被跑几次来推断时间。
: 如此例
: http://jsfiddle.net/JR5Xk/3/
: 其实这是很基本的观念,
: 但普遍看到实作出来的码表或倒数都常常有这个问题,
: 所以只好再撰文呼吁一次...
→ s25g5d4:requestAnimationFrame 05/23 20:46
推 s25g5d4:最近刚好在看 canvas 如何做动画 05/23 20:50
推 s25g5d4:http://tinyurl.com/JSTimers 05/23 20:53
→ danny8376:那是给动画用的 05/23 21:12
→ danny8376:纯计算时间的话 用performance 05/23 21:12
→ danny8376:不过要是浏览器不支援还只是能用Date当fallback就是 05/23 21:14
推 s25g5d4:我就是刚好在做动画阿 XD 05/23 21:19
→ bndan:S大 那个东西跟时间有关的 只适算FPS = =" 要逆向过来会卡在 05/26 11:59
→ bndan:你没办法肯定下一秒的FPS应该是多少...(鸡生蛋蛋生鸡问题) 05/26 11:59
→ danny8376:楼上在说啥... 05/26 17:14
讲东西就是要尽量讲给人家懂...我回文解释一下.
首先 T大提出timer(setinval or setTimeout)的runtime overlap所造成的问题
(单执行绪/PC效能所产生问题)
而S大则提 html5 的 requestAnimationFrame 以试图解决问题...
BUT~
查一下相关API Document就可以知道其主要功能
这东西虽然可以解决上述问题.
但这东西的"执行启动时间"是电脑依电脑状态控制.
所以这时会卡在你没办法确定你的单一次"执行" 是代表多久的时间...
(用这方法再玩下去玩起来.就轮到时间函式的出场了 科科~)
注解:
requestAnimationFrame的功能 : http://ppt.cc/Cyhj (M$的..不喜勿入=_=)
使用模式: 比照setTimeout
参数: 比setTimeout少一个设定启动时间的参数,也就是说这玩意的参数
只有function point(也就是你们说的 feedback)
PS:至于T大原问题的解法就不需要我多话了.(茶)
作者: s25g5d4 (function(){})()   2014-05-27 12:37:00
就是说你的意思是要刚好 n 秒后执行 差几毫秒都不行囉?
楼主: bndan (seed)   2014-05-27 14:24:00
记时要算的精准.自然是毫秒也要记阿 囧> 但我说只是要解释我推文在说什么...
作者: lovelycateye (我还想要更多力量)   2014-05-27 16:54:00
纯推 讲东西就是要尽量讲给人家懂
作者: mmis1000 (秋月恋枫)   2014-05-27 18:44:00
事实上唯一可能知道的是code执行时间,
作者: mmis1000 (秋月恋枫)   2014-05-27 18:45:00
code何时执行是浏览器决定吧?只能给浏览器建议时间
作者: mmis1000 (秋月恋枫)   2014-05-27 18:46:00
像chrome会把不在焦点的setInterval改成至少30秒防lag

Links booklink

Contact Us: admin [ a t ] ucptt.com