【发布时间】:2019-03-06 03:00:52
【问题描述】:
刚刚偶然发现this very old question 中关于清除所有 setTimeouts 的评论。
该评论引起了我的兴趣,因为它实际上并没有直接解决问题,而是为跟踪多个计时器的问题提供了一个非常有趣的替代解决方案,但遗憾的是,他没有提供如何实施的示例:
使用全局超时,您的所有其他函数都会派生计时 从。这将使一切运行得更快,更容易管理, 虽然它会为您的代码添加一些抽象...
...我的意思是你有一个全局超时运行一次 50 毫秒。需要计时元素的所有其他功能将 然后从全局超时中获取它。谷歌切换到这个 效率,虽然我再也找不到引用它的文章了。
如何在全局空间中设置我假设的命名计时器,然后在多种情况下在其他地方引用它?
例如,如果我们在全局空间中有这样的东西:
let myGlobalTimer = setTimeout(function(){ myFunc(); }, 50);
这只会每 50 毫秒运行一次 myFunc。
我很确定您不能将动态函数名称传递给setTimeout,那么如何实现呢?
【问题讨论】:
-
阅读一些答案并关注一些链接会导致这个调度程序:Avoiding JavaScript setTimeout and setInterval Problems,它比下面的答案更复杂一些(尽管它误用了“上下文”一词,因为它意味着“这个”)。
标签: javascript settimeout