Странное значение времени в обратном вызове requestAnimationFrame () [дубликат]
const prev = performance.now();
requestAnimationFrame(now => console.log(now - prev));
Почему now
всегда меньше prev
(по крайней мере, в последних ветках Chrome)?
Скриншот:

Ответы
Это происходит потому, что вы запрашиваете анимацию между текущим кадром и следующей перерисовкой, но на самом деле вы могли пропустить первый триггер обратного вызова текущего кадра, когда timestamp
был установлен аргумент.
В requestAnimationFrame
этот промежуток времени может произойти много вызовов обратного вызова, но все они будут иметь триггер обратного вызова timestamp
первого requestsAnimationFrame
в активном кадре, который мог произойти до вашего вызова performance.now()
.
MDN также заявляет:
Функции обратного вызова передается один единственный аргумент, DOMHighResTimeStamp, аналогичный тому, который возвращается функцией performance.now (), указывающий момент времени, когда requestAnimationFrame () начинает выполнять функции обратного вызова .