Valor de tempo estranho no retorno de chamada requestAnimationFrame () [duplicado]

Dec 05 2020

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

Por que nowé sempre menor que prev(pelo menos nos últimos branches do Chrome)?

Captura de tela:

Respostas

1 MichalisGarganourakis Dec 05 2020 at 06:41

Isso acontece porque você solicita uma animação entre o quadro atual e a próxima repintura, mas pode realmente ter perdido o primeiro acionador de retorno de chamada do quadro atual, que é quando o timestampargumento foi estabelecido.

Muitas chamadas de requestAnimationFrameretorno de chamada poderiam ocorrer neste intervalo de tempo, mas todas elas terão timestampo primeiro requestsAnimationFramegatilho de retorno de chamada no quadro ativo, que pode ter ocorrido antes de sua chamada para performance.now().

MDN também afirma:

A função de retorno de chamada recebe um único argumento, um DOMHighResTimeStamp semelhante ao retornado por performance.now (), indicando o ponto no tempo em que requestAnimationFrame () começa a executar funções de retorno de chamada .