我怎样才能得到所有的计时器在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
注册。
现在,您可以查询您自己的数据结构注册超时。
当然,你应该跟踪过期/触发超时以及清除超时…