「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > JavaScript でタイムアウト実行を制御し、残り時間を判断するにはどうすればよいですか?

JavaScript でタイムアウト実行を制御し、残り時間を判断するにはどうすればよいですか?

2024 年 11 月 9 日に公開
ブラウズ:188

How Can I Control Timeout Execution and Determine Remaining Time in JavaScript?

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

JavaScript を使用する場合、タイムアウトなどの非同期操作のフローを制御することが必要になる場合があります。ここでは、アクティブなタイムアウトを一時停止および再開する方法、および現在のタイムアウトの残り時間を取得する方法を検討します。

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

タイムアウトを一時停止するには、ラッパーを利用できます。 window.setTimeout 呼び出しをインターセプトし、必要な機能を提供する関数。ラッパー関数 Timer は、コールバック関数と遅延を引数として受け取り、一時停止、再開、残り時間の追跡を処理します。

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 オブジェクトをインスタンス化し、必要に応じてそのポーズ() メソッドと再開() メソッドを呼び出します。

残り時間の取得

残り時間を取得するには現在のタイムアウトの時刻。1 つの方法は、タイムアウトが設定されているときに開始時刻を保存し、一時停止時に現在の時刻と開始時刻の差を計算することです。

var start = Date.now();
var t = setTimeout("dosomething()", 5000);
var remaining = (start   5000) - Date.now();

ただし、タイムアウトが一時停止されて再開された場合、この計算は正確ではない可能性があることに注意することが重要です。前に提供したタイマー ラッパー関数では、残り時間が追跡され、それに応じて更新され、残り時間を取得するためのより信頼性の高い方法が提供されます。

リリースステートメント この記事は次の場所に転載されています: 1729595660 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3