Javascript 什么会导致requestAnimationFrame返回未定义而不是id?

Javascript 什么会导致requestAnimationFrame返回未定义而不是id?,javascript,requestanimationframe,Javascript,Requestanimationframe,有时,当我使用requestAnimationFrame时,我会将它返回的id存储在“返回值”部分中: 此id可与cancelRequestAnimationFrame一起使用: 但是,有时requestAnimationFrame会返回未定义的值,如果返回未定义的值,则会重复执行,而不仅仅是在最后一次调用时。上面的链接中似乎没有记录这一点。有一个github项目在这里经历了同样的事情: 还有一个修复它的承诺,但我看不出是什么导致了它。我看到的顺序是每次连续调用的id增量,但之后每次调用都

有时,当我使用requestAnimationFrame时,我会将它返回的id存储在“返回值”部分中:

此id可与cancelRequestAnimationFrame一起使用:

但是,有时requestAnimationFrame会返回未定义的值,如果返回未定义的值,则会重复执行,而不仅仅是在最后一次调用时。上面的链接中似乎没有记录这一点。有一个github项目在这里经历了同样的事情:

还有一个修复它的承诺,但我看不出是什么导致了它。我看到的顺序是每次连续调用的id增量,但之后每次调用都没有定义

我在这方面的经验是:

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”处理程序花费了3644ms


我的加载序列有几个requestAnimationFrame调用,有些调用似乎被延迟了。可能它们相互干扰了?

您能发布您遇到此问题的代码吗?在我用一些代码更新了原始帖子之后,您可能会在第一次调用和所有后续调用之间的某个地方意外地覆盖变量。未定义id的代码是非常基本的,它本身可以正常工作,但它是加载序列的一部分,其中有另一个requestAnimationFrame调用,有时会被延迟。我不确定这是否会影响它。将请求ID存储在局部变量中,将其记录到控制台,然后再将其写入
this.requestId
。结果是一样的吗?对于链接到的案例,它们覆盖了原始的
requestAnimationFrame
方法。你也在做类似的事情吗?
console.log(requestAnimationFrame.toString())
输出了什么?结果是我在原始帖子中链接到的同一个问题。我当时使用的是repo(它是一个Chrome扩展),而pull请求没有合并。我没有意识到代码正在重新定义requestAnimationFrame。我试图在自己的代码中找到问题,但没有意识到这是浏览器扩展,因为错误是在我的代码中提出的。再次感谢你指出这一点,我会浪费这么多时间在错误的地方寻找这个。