ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript でタイムアウトを効率的に一時停止および再開するにはどうすればよいですか?

JavaScript でタイムアウトを効率的に一時停止および再開するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-23 00:18:03941ブラウズ

How to Pause and Resume Timeouts in JavaScript Efficiently?

JavaScript タイムアウトの一時停止と再開

JavaScript で setTimeout を使用する場合、タイムアウトを一時停止および再開できる機能は、さまざまなシナリオで役立ちます。遅延が設定されているが、実行前または非同期操作の完了を待つために一時停止が必要な状況が発生する可能性があります。

カスタム ラッパーを使用したタイムアウトの一時停止と再開

現在の時刻を保存して残りの継続時間を計算する代わりに、一時停止と再開の機能を提供する window.setTimeout の周囲にカスタム ラッパーを作成することができます。このアプローチは、より洗練された再利用可能なソリューションを提供します。

var Timer = function(callback, delay) {
    var timerId, start, remaining = delay;

    this.pause = function() {
        window.clearTimeout(timerId);
        timerId = null;
        remaining -= Date.now() - start;
    };

    this.resume = function() {
        if (timerId) {
            return;
        }

        start = Date.now();
        timerId = window.setTimeout(callback, remaining);
    };

    this.resume();
};

このカスタム Timer クラスを使用すると、必要に応じてタイムアウトを一時停止したり再開したりできます。これを使用するには、コールバック関数と遅延を使用して初期化し、必要に応じてポーズ() メソッドまたは再開() メソッドを呼び出します。

例:

var timer = new Timer(function() {
    alert("Done!");
}, 1000);

timer.pause();
// Perform asynchronous operations or other tasks
timer.resume();

注: このカスタム ラッパーは、一時停止されたタイマーの残り時間を取得する方法を提供しません。あるいは、残り時間を追跡し、getTimeRemaining() メソッドを提供する、より包括的なラッパーを実装することもできます。

以上がJavaScript でタイムアウトを効率的に一時停止および再開するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。