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

Pol*_*lly 6 javascript settimeout node.js

setTimeout()在不同的类中创建了具有功能的不同计时器。我想知道是否有办法将所有超时合并在一起?

T.J*_*der 5

不是默认的,不是。您可以创建自己的模块,让您跟踪计时器,并为您提供列表。大致

// 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();
};
Run Code Online (Sandbox Code Playgroud)

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