标签:
有很多需求都是需要计时器的 比如那种常见的倒计时 虽然很简单 但是其中也有许多糟糕的实现
计时器只能提供到某个时间点触发某个队列的功能 而具体触发的时间点是不确定的
比如在计时器中递增或递减某个变量某个行为 就不适合倒计时这种实现 如下代码
var t = 100; setTinterval(function(){ --t; });
这种代码做倒计时就是个大坑 如果你把窗口切换了 倒计时功能直接傻逼了
再加上触发的间隔也不能保证 如果期间又插进来一个耗时较长的消息队列 那么你的倒计时功能又再次被推迟!
所以类似倒计时的这种程序 最好是基于时间来计算 如下
var t = Date.now()+23333; setTinterval(function(_t){ if(Date.now()-t>=0) //.... });
其实我们应该用setTimeout来代替setInterval setInterval能实现的setTimeout都可以做。。
那些非css3 transition animate的动画是要依赖计时器的 其中实时性不强的动画用递增递减变量来操控是可以的 窗口切换也没多大关系 而且方便。。
但是有些功能必须是基于时间来计算的!
比如 即将诞生的 react视频弹幕播放系统 每一条弹幕的坐标位置必须是 f(t)函数
这篇博文没多少东西 只是衬托上面那行文字(提高梦想の达成率)~
标签:
原文地址:http://www.cnblogs.com/daidaidai/p/5565689.html