Что заставило бы requestAnimationFrame возвращать undefined вместо идентификатора? - PullRequest
0 голосов
/ 17 февраля 2020

Иногда, когда я использую 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, и некоторые из них, похоже, задерживаются , Может, они мешают друг другу?

...