Seltsamer Zeitwert im Rückruf von requestAnimationFrame () [Duplikat]

Dec 05 2020

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

Warum nowist immer weniger als prev(zumindest in den letzten Chrome-Filialen)?

Bildschirmfoto:

Antworten

1 MichalisGarganourakis Dec 05 2020 at 06:41

Dies geschieht, weil Sie eine Animation zwischen dem aktuellen Frame und dem nächsten Repaint anfordern, aber möglicherweise den ersten Rückruf-Trigger des aktuellen Frames verpasst haben, als das timestampArgument erstellt wurde.

requestAnimationFrameIn dieser Zeitspanne können viele Rückrufe auftreten, aber alle haben den Rückrufauslöser timestampdes ersten requestsAnimationFrameim aktiven Frame, der möglicherweise vor Ihrem Anruf bei aufgetreten ist performance.now().

MDN gibt auch an:

Die Callback - Funktion wird ein einziges Argument übergeben, ein DOMHighResTimeStamp ähnlich dem von performance.now () zurückgegeben wird , den Zeitpunkt angibt , wann request () beginnt Rückruf auszuführen Funktionen .