如何在javascript中获取所有计时器?

时间:2017-09-02 12:59:11

标签: javascript node.js settimeout

我在不同的类中使用setTimeout()函数创建了不同的计时器。我想知道是否有办法让所有超时结合在一起?

2 个答案:

答案 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,回调函数,超时时间...)注册。

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

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