【发布时间】:2012-07-07 18:31:29
【问题描述】:
在给定的秒数后取消所有 JS setTimeout、setInterval 和 requestAnimationFrame 的正确方法是什么?
编辑:对不起,我应该解释更多!该代码来自数据库或某些 API,因此我无法跟踪超时、raf 或间隔 ID。所以我没有定时器的 ID,我可以很容易地让你清除 Interval 或 clearTimeout 或 cancelAnimationFrame。我知道我必须使用它们,但我不知道如何获取所有动画 ID(如果有的话)。
【问题讨论】:
-
在这种情况下,无法取消它们。您唯一可以做的另一件事是覆盖它们引用的函数,前提是已经为 setTimeout 调用提供了命名函数引用。用新的空函数覆盖每个引用的函数,超时发生时不会发生任何事情。
-
在我链接到上述评论的帖子中,有一个答案重新定义了
setInterval和setTimeout方法并自动将它们注册到全局列表中,然后用于清除所有其中。对于您的目的,这可能非常有趣。
标签: javascript jquery animation