1. ホーム
  2. javascript

[解決済み] javascriptで全てのタイムアウト/インターバルを表示するには?

2023-01-04 22:45:21

質問

JavaScriptのタイムアウトとインターバルを利用して、ページを更新するアプリケーションを書いています。いくつのインターバルが設定されているかを確認する方法はありますか? 私は、何百もの間隔が設定されていることによって、誤ってブラウザを殺すことにならないことを確認したいです。

これは問題なのでしょうか?

どのように解決するのですか?

アクティブなタイマーを列挙する方法はないと思いますが、オーバーライドすることができます。 window.setTimeoutwindow.clearTimeout を実装し、トラッキングを行う独自の実装に置き換えてから、オリジナルを呼び出します。

window.originalSetTimeout = window.setTimeout;
window.originalClearTimeout = window.clearTimeout;
window.activeTimers = 0;

window.setTimeout = function(func, delay) {
    window.activeTimers++;
    return window.originalSetTimeout(func, delay);
};

window.clearTimeout = function(timerID) {
    window.activeTimers--;
    window.originalClearTimeout(timerID);
};

もちろん、常に clearTimeout を常に呼び出すとは限りませんが、これは少なくとも実行時に何が起こっているかを追跡するための何らかの方法を提供するでしょう。