Valeur de temps étrange dans le rappel requestAnimationFrame () [duplicate]

Dec 05 2020

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

Pourquoi nowest toujours inférieur à prev(au moins dans les dernières branches Chrome)?

Capture d'écran:

Réponses

1 MichalisGarganourakis Dec 05 2020 at 06:41

Cela se produit parce que vous demandez une animation entre l'image actuelle et la prochaine peinture, mais vous pourriez en fait avoir manqué le premier déclencheur de rappel de l'image actuelle, c'est-à-dire lorsque l' timestampargument a été établi.

De nombreux appels de requestAnimationFramerappel peuvent se produire pendant cette période, mais tous auront le déclencheur de rappel timestampdu premier requestsAnimationFramedans la trame active qui peut avoir eu lieu avant votre appel à performance.now().

MDN déclare également:

La fonction de rappel reçoit un seul argument, un DOMHighResTimeStamp similaire à celui renvoyé par performance.now (), indiquant le moment où requestAnimationFrame () commence à exécuter les fonctions de rappel .