Иногда, когда я использую requestAnimationFrame, я сохраняю идентификатор, который он возвращает, как описано здесь, в разделе «Возвращаемое значение»:
https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame
Этот идентификатор может использоваться с cancelRequestAnimationFrame:
https://developer.mozilla.org/en-US/docs/Web/API/Window/cancelAnimationFrame
Однако бывают случайные моменты времени, когда requestAnimationFrame возвращает неопределенное значение, и когда это происходит, он делает это повторно, а не только на последний звонок. Кажется, это не задокументировано в приведенных выше ссылках. Есть проект GitHub, который испытал то же самое здесь:
https://github.com/jeromeetienne/threejs-inspector/issues/21
, и есть коммит там, чтобы исправить это, но я не вижу, что могло вызвать Это. Последовательность, которую я видел, - это увеличение идентификатора при каждом последующем вызове, но затем оно не определено для каждого последующего вызова.
Код, с которым я столкнулся, это:
animateProgress = function(t) {
var n = t - this._previousTimeStamp;
this._previousTimeStamp = t;
this.requestId = requestAnimationFrame(function(time) {
return animateProgress(time)
});
console.log("id is ", this.requestId);
}
animateProgress(0);
Используется во время последовательность загрузки, и в консоли есть несколько предупреждений, таких как:
[Нарушение] Обработчик requestAnimationFrame занял 3644 мс
Моя последовательность загрузки имеет несколько вызовов requestAnimationFrame, и некоторые из них, похоже, задерживаются , Может, они мешают друг другу?