Я всегда думал, что временная метка, используемая requestAnimationFrame, такая же, как обычная временная метка в JavaScript, то есть число миллисекунд с 1 января 1970 года. Сегодня я взял отметки времени для проверки и установил, что временная метка RAF, вероятно, измеряется с тех пор, как начало загрузки страницы. Каковы точно измеренные временные метки?requestAnimationFrame: что такое метка времени?
Тест код:
<p id="output"></p>
var i = 0;
var start = null;
var times = [];
var dur = 5000;
function step(timestamp) {
if (start===null) start = timestamp;
times[i++] = timestamp;
if (timestamp-start<=dur) {
requestAnimationFrame(step);
} else {
document.getElementById('output').innerHTML = times.join('<br>');
}
}
requestAnimationFrame(step);
дает результаты, как это:
158.52126457412882
183.12243595205535
199.52116819316421
...
во всех RAF способных браузеров.
Из [docs] (https://developer.mozilla.org/en-US/docs/Web/API/window.requestAnimationFrame): «Обратный вызов имеет один единственный аргумент, [' DOMHighResTimeStamp'] (https : //developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp), который указывает текущее время, когда requestAnimationFrame начинает запускать обратные вызовы. " –