我一直认为requestAnimationFrame使用的时间戳与JavaScript中通常使用的时间戳相同,即自1970年1月1日以来的毫秒数。今天我捕获了时间戳进行验证,发现RAF时间戳可能是自页面加载开始以来度量的。这些时间戳具体是从哪里开始度量的呢?
测试代码:
<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的浏览器。
DOMHighResTimeStamp
,它表示requestAnimationFrame开始触发回调的当前时间。” - gen_Eric