Кажется, что когда я 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
- 1мс
- 2мс
- 3ms
- 4ms
- 5ms
- 5ms
- 7мс
- 8ms
- 9ms
- 9ms
- 10мс
Посмотрите сами: http://jsfiddle.net/zryNf/
Итак, есть ли более точный способ сохранить время? или способ сделать setInterval
вести себя с большей точностью?