Valor de tiempo extraño en requestAnimationFrame () callback [duplicado]

Dec 05 2020

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

¿Por qué nowsiempre es menor que prev(al menos en las últimas ramas de Chrome)?

Captura de pantalla:

Respuestas

1 MichalisGarganourakis Dec 05 2020 at 06:41

Esto sucede porque solicita una animación entre el fotograma actual y el siguiente repintado, pero en realidad podría haber perdido el primer disparador de devolución de llamada del fotograma actual, que es cuando timestampse estableció el argumento.

Muchas llamadas a la requestAnimationFramedevolución de llamada podrían ocurrir en este período de tiempo, pero todas tendrán el disparador de la devolución de llamada timestampdel primero requestsAnimationFrameen el marco activo que puede haber ocurrido antes de su llamada a performance.now().

MDN también declara:

A la función de devolución de llamada se le pasa un solo argumento, un DOMHighResTimeStamp similar al devuelto por performance.now (), que indica el momento en el que requestAnimationFrame () comienza a ejecutar funciones de devolución de llamada .