似乎当我setInterval
持续 1000 毫秒时,它实际上每 1001 毫秒左右触发一次该功能。这导致运行时间越长,时间漂移越慢。
var start;
var f = function() {
if (!start) start = new Date().getTime();
var diff = new Date().getTime() - start;
var drift = diff % 1000;
$('<li>').text(drift + "ms").appendTo('#results');
};
setInterval(f, 1000);
运行时,这会立即显示不准确。
- 0ms
- 1ms
- 2ms
- 3ms
- 4ms
- 5ms
- 5ms
- 7ms
- 8ms
- 9ms
- 9ms
- 10ms
自己看看:http : //jsfiddle.net/zryNf/
那么有没有更准确的计时方法呢?或者一种使setInterval
行为更准确的方法?