问题描述
- js中有段代码不理解,只有3行的,可能是用来让setTimeout的时间更加精准的,求大神鉴定
-
function animate() { var start = +new Date(); //其他的语句 var finish = +new Date(); //请问这里为什么要减去(finish-start) setTimeout(animate, 1000 - (finish-start)); }
解决方案
每一个动画本身也需要时间,这样做使得动画播放的周期正好是1秒,当然不可能很精确。
解决方案二:
1.每个动画以1秒为单位执行;
2.finish-start -> 可以理解为一个动画从开始到结束的时间,从代码看,一般每个动画完成的时间会少于1秒;
3.为了在单位时间(1秒)内完成动画,那么就要进行延迟执行动画,延迟多长时间呢?那就是1秒减掉执行过程要耗费掉的时间,就是我要执行动画的时间。
总结: 延迟时间 + 动画执行时间 == 1秒
解决方案三:
每个周期等于 定时器的周期+执行定时器的周期
解决方案四:
其实没什么实际意义,这里没啥差别,除非中间有一堆其他逻辑
时间: 2024-08-30 17:55:30