setInterval的实时

时间:2014-03-03 21:30:12

标签: javascript setinterval timing

这些功能的间隔是否存在差异?

    function myIntervalFunction() {
        for(var c=1000000000000;c>0;--c) ;
    }

    setInterval(myIntervalFunction,1000);

    function myIntervalFunction() {
    }

    setInterval(myIntervalFunction,1000);

setInterval是否会在给定的时间间隔内暂停javaScript,还是在精确的毫秒时间后触发? 经过测试,我认为如果某些代码运行需要更长的时间,但我不确定。这可能是可能的,如果可能的话,我该如何确定它的确切期限?

注意:不是循环我的代码,而是在HTML5画布上绘制。

1 个答案:

答案 0 :(得分:1)

setInterval调用会将您的函数放在计时器的回调队列中,但不能保证以高精度命中您指定的时间间隔。每个JS引擎实现在实现定时器的方式上都有所不同,但大多数可能会有一些定时器回调池,这意味着很难预测所需间隔与调用回调函数之间的实际间隔之间的确切差异。

当你达到几十毫秒的水平时,分辨率会变差。

如果您正在寻找一种方法来获得动画的恒定帧速率,您可能需要查看使用现代borwsers中提供的this post进行讨论的requestAnimationFrame API