MDN Performance.now():
Метод Performance.now() возвращает метку времени с высоким разрешением в миллисекундах. Он представляет время, прошедшее с момента Performance.timeOrigin.
MDN document.timeline.currentTime
Эта временная шкала показывает время в миллисекундах с момента Performance.timeOrigin.
Кроме того, поскольку значения времени временной шкалы документа по умолчанию имеют нулевое смещение от начала координат, document.timeline.currentTime будет примерно соответствовать Performance.now().
console.info(performance.now(), document.timeline.currentTime)имеет разные значения. Почему?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Потому что currentTime временной шкалы обновляется только тогда, когда веб-анимация , что находится на обновлении этапов рендеринга цикла событий.
Поэтому, если вы продолжите запрашивать currentTime во время цикла, вы получите только одно значение:
const timestamps = new Set();
const t1 = performance.now();
while (performance.now() - t1 < 3000) { // perform below code for 3s
timestamps.add(document.timeline.currentTime);
}
console.info([...timestamps]); // a single valueОбратите внимание, что эта временная метка должна быть такой же, как и переданная в обратные вызовы requestAnimationFrame в контексте Window:
let i = 0;
const anim = (timestamp) => {
console.info('same timestamps', timestamp === document.timeline.currentTime);
if (i++ < 10)
requestAnimationFrame(anim);
}
requestAnimationFrame(anim);