所以我有一个简单的函数:
var start = function(){
lastFrame = performance.now();
requestAnimationFrame((t)=>{interval(t)});
}
我的间隔函数(仅用于测试目的,我已经阻塞了每个rAF时间戳的值)
function interval(t){
console.log (t);
console.log(lastFrame);
}
我已经阅读了对另一个问题的以下回答,但是有几个部分我就是不理解这个人的回答。
传递给requestAnimationFrame()回调的时间戳是动画帧开始的时间。在同一帧期间调用多个回调函数会接收相同的时间戳。因此,如果performance.now()返回先于参数值的时间,这将非常奇怪,但如果返回稍后的时间则不会很奇怪。
"如果performance.now()返回先于参数值的时间,这将非常奇怪"?
为什么这会很奇怪呢?我认为Javascript是一种解释型语言?此时:
lastFrame = performance.now();
浏览器甚至不知道下一行的存在:
requestAnimationFrame((t)=>{interval(t)});
当你在为requestAnimationFrame提供回调函数之前调用performance.now(),那么lastFrame的时间应该小于传递给requestAnimationFrame的t时间。在这个人的回复中,他列出了请求动画帧所涉及的6个步骤。然而,他将performance.now()调用列为最后一步。但它在动画帧请求之前被浏览器解释,怎么可能是最后一步呢?
performance.now
,而不是从“start”中调用。 - Bergi