我在不同的类中使用setTimeout()
函数创建了不同的计时器。我想知道是否有办法让所有超时结合在一起?
答案 0 :(得分:2)
不是默认情况下,不是。您可以创建自己的模块,让您跟踪计时器,并为您提供列表。的 粗略 强>:
// 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
而不是全局的。{/ p>
答案 1 :(得分:0)
没有API可以获得注册超时,但是有一种“方法”可以实现您的目标。
创建一个新函数,我们称之为registerTimeout
。确保它与setTimeout
具有相同的签名。在此函数中,使用setTimeout
跟踪您需要的内容(返回的计时器ID,回调函数,超时时间...)和注册。
现在,您可以查询自己的数据结构以查看已注册的超时。
当然你应该跟踪过期/触发超时以及清除超时......