我在不同的类中使用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而不是全局代码。

09-28 00:31