Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置间隔延迟不准确_Javascript_Jquery_Setinterval - Fatal编程技术网

Javascript 设置间隔延迟不准确

Javascript 设置间隔延迟不准确,javascript,jquery,setinterval,Javascript,Jquery,Setinterval,我目前正在使用setInterval创建一个倒计时,不过目前它运行速度比应该的慢。根据,延迟参数以毫秒为单位,但并不准确 我将我的倒计时与手机上的倒计时进行了比较,手机运行速度快了近5倍 var count = setInterval( function() { if (iMil == 0) { if (iS == 0) { if (iMin == 0) {

我目前正在使用setInterval创建一个倒计时,不过目前它运行速度比应该的慢。根据,延迟参数以毫秒为单位,但并不准确

我将我的倒计时与手机上的倒计时进行了比较,手机运行速度快了近5倍

    var count = setInterval( function() {
            if (iMil == 0) {
                if (iS == 0) {
                    if (iMin == 0) {
                        if (iH == 0) {
                            // DONE
                        } else {
                            iH--;
                            iMin = 59;
                            iS = 59;
                            iMil = 999;
                        }
                    } else {
                        iMin--;
                        iS = 59;
                        iMil == 999;
                    }
                } else {
                    iS--;
                    iMil = 999;
                }
            } else {
                iMil--;
            }
            hours.text(iH);
            minutes.text(iMin);
            seconds.text(iS);
            milliseconds.text(iMil);
        }, 1 );
这是我剧本的主要部分。变量
小时
分钟
毫秒
是jQuery对象元素

我想说的是,它的运行速度是否也比预期的慢?

setInterval()
不能保证在javascript中完全按时运行。这部分是因为JS是单线程的,部分是因为其他原因。如果要使用
setInterval()
显示时间,请获取每个计时器上的当前时间并显示该时间。
setInterval()
将不是您的计时器,而只是一种定期屏幕更新机制。如果你这样做,你的时间显示总是准确的

此外,任何浏览器都不能保证以1毫秒的间隔呼叫您的手机。事实上,许多浏览器调用
setInterval
的频率永远不会超过每5毫秒一次,有些甚至超过5毫秒一次。另外,如果浏览器中发生任何其他事件,并且其他代码响应这些事件,则
setInterval()
调用可能会延迟更长时间。HTML5规范建议4ms为
setTimeout()
的最短间隔,10ms为
setInterval()
的最短间隔,但允许实现者在需要时使用更长的最短时间

事实上,如果你看一下,算法的第5步说:

如果超时小于10,则将超时增加到10

第8步说:

(可选)等待另一个用户代理定义的时间长度

其中包括以下注释:

这是为了允许用户代理根据需要填充超时,以 优化设备的电源使用。例如,一些处理器 具有低功耗模式,其中定时器的粒度减小;在…上 在这样的平台上,用户代理可以降低计时器的运行速度以适应这一时间表 而不是要求处理器使用更精确的模式 它与更高的功耗相关

setInterval()
不能保证在javascript中完全按时运行。这部分是因为JS是单线程的,部分是因为其他原因。如果要使用
setInterval()
显示时间,请获取每个计时器上的当前时间并显示该时间。
setInterval()
将不是您的计时器,而只是一种定期屏幕更新机制。如果你这样做,你的时间显示总是准确的

此外,任何浏览器都不能保证以1毫秒的间隔呼叫您的手机。事实上,许多浏览器调用
setInterval
的频率永远不会超过每5毫秒一次,有些甚至超过5毫秒一次。另外,如果浏览器中发生任何其他事件,并且其他代码响应这些事件,则
setInterval()
调用可能会延迟更长时间。HTML5规范建议4ms为
setTimeout()
的最短间隔,10ms为
setInterval()
的最短间隔,但允许实现者在需要时使用更长的最短时间

事实上,如果你看一下,算法的第5步说:

如果超时小于10,则将超时增加到10

第8步说:

(可选)等待另一个用户代理定义的时间长度

其中包括以下注释:

这是为了允许用户代理根据需要填充超时,以 优化设备的电源使用。例如,一些处理器 具有低功耗模式,其中定时器的粒度减小;在…上 在这样的平台上,用户代理可以降低计时器的运行速度以适应这一时间表 而不是要求处理器使用更精确的模式 它与更高的功耗相关

setInterval()
不能保证在javascript中完全按时运行。这部分是因为JS是单线程的,部分是因为其他原因。如果要使用
setInterval()
显示时间,请获取每个计时器上的当前时间并显示该时间。
setInterval()
将不是您的计时器,而只是一种定期屏幕更新机制。如果你这样做,你的时间显示总是准确的

此外,任何浏览器都不能保证以1毫秒的间隔呼叫您的手机。事实上,许多浏览器调用
setInterval
的频率永远不会超过每5毫秒一次,有些甚至超过5毫秒一次。另外,如果浏览器中发生任何其他事件,并且其他代码响应这些事件,则
setInterval()
调用可能会延迟更长时间。HTML5规范建议4ms为
setTimeout()
的最短间隔,10ms为
setInterval()
的最短间隔,但允许实现者在需要时使用更长的最短时间

事实上,如果你看一下,算法的第5步说:

如果超时小于10,则将超时增加到10

第8步说:

(可选)等待另一个用户代理定义的时间长度

其中包括以下注释:

这是为了允许用户代理根据需要填充超时,以 优化设备的电源使用。例如,一些处理器 具有低功耗模式,其中定时器的粒度减小;在…上 在这样的平台上,用户代理可以降低计时器的运行速度以适应这一时间表 而不是要求处理器使用更精确的模式 它与更高的功耗相关

setInterval()
不能保证在javascript中完全按时运行。这部分是因为JS是单线程的,部分是因为其他原因。如果要使用
setInterval()
显示时间,请获取