每毫秒运行一次功能

Raj*_*amy 6 html javascript timer

我试图为每毫秒运行一个函数,为了实现这一点,我只是setInterval在javascript中首选概念.我的代码如下,

HTML:

<div id=test>0.0</div>
Run Code Online (Sandbox Code Playgroud)

脚本:

var xVal = 0;
var xElement = null;

xElement = document.getElementById("test");
var Interval = window.setInterval(startWatch, 1);


function startWatch(){

    xVal += 1;
    xElement.innerHTML = xVal;

}
Run Code Online (Sandbox Code Playgroud)

所以上面的代码工作正常.但是当我使用真实时钟测试结果时,真正的时钟需要1000毫秒才能完成1秒,同时结果需要超过1000毫秒才能完成一秒钟.

DEMO

谁能告诉我,

我的代码有什么错误吗?如果是,请告诉我,如何准确显示毫秒.

bfa*_*tto 8

代码中没有错误,但JavaScript定时器(setIntervalsetTimeout)并不精确.浏览器不能遵守如此短的间隔.所以我担心没有办法精确地将毫秒增加一,并在Web浏览器上显示更新.在任何情况下,人眼都看不到!

精确的解决方法将涉及更大的间隔和时间戳来计算经过的时间(以毫秒为单位):

var start = new Date().getTime();
setInterval(function() {
    var now = new Date().getTime();
    xElement.innerHTML = (now - start) + 'ms elapsed';
}, 40);
Run Code Online (Sandbox Code Playgroud)


Roc*_*mat 6

你不能。浏览器有一个最小延迟。你不能每毫秒运行一个函数。

来自 Mozilla 的文档:

...4ms 由 HTML5 规范指定,并且在各个浏览器中保持一致...

来源: https: //developer.mozilla.org/en-US/docs/Web/API/window.setTimeout#Minimum.2F_maximum_delay_and_timeout_nesting