Nilai waktu aneh dalam callback requestAnimationFrame () [duplikat]

Dec 05 2020

const prev = performance.now();
requestAnimationFrame(now => console.log(now - prev));

Mengapa nowselalu kurang dari prev(setidaknya di cabang Chrome terakhir)?

Tangkapan layar:

Jawaban

1 MichalisGarganourakis Dec 05 2020 at 06:41

Hal ini terjadi karena Anda meminta animasi antara frame saat ini dan pengecatan ulang berikutnya, tetapi sebenarnya Anda bisa melewatkan pemicu callback pertama dari frame saat ini yaitu saat timestampargumen dibuat.

Banyak panggilan ke panggilan requestAnimationFramebalik dapat terjadi dalam rentang waktu ini, tetapi semuanya akan memiliki pemicu panggilan balik timestamppertama requestsAnimationFramedalam bingkai aktif yang mungkin terjadi sebelum panggilan Anda ke performance.now().

MDN juga menyatakan:

Fungsi callback diteruskan satu argumen tunggal, DOMHighResTimeStamp mirip dengan yang dikembalikan oleh performance.now (), yang menunjukkan titik waktu ketika requestAnimationFrame () mulai menjalankan fungsi callback .