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();
ただし、タイムアウトが一時停止されて再開された場合、この計算は正確ではない可能性があることに注意することが重要です。前に提供したタイマー ラッパー関数では、残り時間が追跡され、それに応じて更新され、残り時間を取得するためのより信頼性の高い方法が提供されます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3