u010513756
_Slience_
2015-08-31 08:26
采纳率: 50%
浏览 1.8k

js中有段代码不理解,只有3行的,可能是用来让setTimeout的时间更加精准的,求大神鉴定

 function animate() {
            var start = +new Date();
            //其他的语句
            var finish = +new Date();
            //请问这里为什么要减去(finish-start)
            setTimeout(animate, 1000 - (finish-start));

        }
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • caozhy
    已采纳

    每一个动画本身也需要时间,这样做使得动画播放的周期正好是1秒,当然不可能很精确。

    点赞 评论
  • caozhy

    每个周期等于 定时器的周期+执行定时器的周期

    点赞 评论
  • notlikeGaoShou
    八戒 2015-08-31 10:40

    其实没什么实际意义,这里没啥差别,除非中间有一堆其他逻辑

    点赞 评论
  • ZxxSteven
    张子溪 2015-09-04 15:26

    1.每个动画以1秒为单位执行;
    2.finish-start -> 可以理解为一个动画从开始到结束的时间,从代码看,一般每个动画完成的时间会少于1秒;
    3.为了在单位时间(1秒)内完成动画,那么就要进行延迟执行动画,延迟多长时间呢?那就是1秒减掉执行过程要耗费掉的时间,就是我要执行动画的时间。

    总结: 延迟时间 + 动画执行时间 == 1秒

    点赞 评论

相关推荐