JavaScript を使用する場合、タイムアウトなどの非同期操作のフローを制御することが必要になる場合があります。ここでは、アクティブなタイムアウトを一時停止および再開する方法、および現在のタイムアウトの残り時間を取得する方法を検討します。
タイムアウトを一時停止するには、ラッパーを利用できます。 window.setTimeout 呼び出しをインターセプトし、必要な機能を提供する関数。ラッパー関数 Timer は、コールバック関数と遅延を引数として受け取り、一時停止、再開、残り時間の追跡を処理します。
<code class="javascript">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(); };</code>
このラッパーを使用するには、Timer オブジェクトをインスタンス化し、そのオブジェクトを呼び出します。
現在のタイムアウトの残り時間を取得するには、1 つの方法は、タイムアウトが設定されたときに開始時間を保存し、一時停止時に現在時刻と開始時刻の差を計算します。
<code class="javascript">var start = Date.now(); var t = setTimeout("dosomething()", 5000); var remaining = (start + 5000) - Date.now();</code>
ただし、タイムアウトが一時停止されて再開された場合、この計算は正確ではない可能性があることに注意することが重要です。前に提供したタイマー ラッパー関数では、残り時間が追跡され、それに応じて更新され、残り時間を取得するためのより信頼性の高い方法が提供されます。
以上がJavaScript でタイムアウト実行を制御し、残り時間を判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。