我一直认为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);
Run Code Online (Sandbox Code Playgroud)
给出这样的结果:
158.52126457412882
183.12243595205535
199.52116819316421
...
Run Code Online (Sandbox Code Playgroud)
在所有支持RAF的浏览器中.
我在 Angular 2 最终版本中对 observable(http.get 的结果)使用订阅方法。虽然 subscribe 方法的第一个参数是从后端获取数据的函数,第二个是在错误时执行的函数(如状态 http 代码 404),但我不明白第三个参数/函数的含义。
希望它总是在请求结束时执行(成功或错误),我删除/停止加载其中的指示器,但第三个函数不会在错误时调用。