我怎样才能得到所有的计时器在JavaScript?

我在不同的类中创build了具有setTimeout()函数的不同定时器。 我想知道是否有办法让所有的超时时间在一起?

不是默认的,不。 你可以使自己的模块,让你跟踪计时器,哪些给你的名单。 粗略地说

 // ES2015+ version const activeTimers = []; exports.setTimeout = (callback, interval, ...timerArgs) => { const handle = setTimeout((...args) => { const index = activeTimers.indexOf(handle); if (index >= 0) { activeTimers.splice(index, 1); } callback(...args); }, interval, ...timerArgs); activeTimers.push(handle); }; exports.getActiveTimers = () => { return activeTimers.slice(); }; 

…然后使用它的setTimeout而不是全局的。

没有API来获取注册超时,但有一个“方法”来实现你的目标。

创build一个新的函数,我们称之为registerTimeout 。 确保它具有与setTimeout相同的签名。 在这个函数中,跟踪你需要什么(返回的定时器ID,callback函数,超时时间…), 使用setTimeout注册。

现在,您可以查询您自己的数据结构注册超时。

当然,你应该跟踪过期/触发超时以及清除超时…