2017-01-24 20 views
0

私は25分で開始し、次の25分をリセット/再起動するsetTimeout関数を持っています。私のテストスクリプトは、1500000msから1000msのような短いものに変更すると、はっきりと動作します。しかし、私は(退屈に)25分(1500000ms)ごとにそれをテストしていません。助言がありますか?長時間のsetTimeoutのリセット

// 1000ms = 1s 
 
// 60000ms = 60s   // 1 min 
 
// 1500000 = 1500s  // 25 mins 
 

 
var timer = null; 
 
timer = setTimeout(sessionFunction, 1500000); 
 

 
function sessionFunction() { 
 
    alert('test'); 
 
    clearTimeout(timer); 
 
 
    timer = setTimeout(sessionFunction, 1500000); 
 
}

// 1000ms = 1s 
// 60000ms = 60s   // 1 min 
// 1500000 = 1500s  // 25 mins 

var timer = null; 
timer = setTimeout(sessionFunction, 1500000); 

function sessionFunction() { 
    alert('test'); 
    clearTimeout(timer); 
  
    timer = setTimeout(sessionFunction, 1500000); 
} 
+0

手動でタイマーをクリアしてタイマーをリセットするのではなく、 'setInterval'を使用することができます –

+0

ブラウザタブが実行中に非表示になっていますか? – epascarello

+0

はい、場合によってはこれは、セッションタイムアウト警告ダイアログとして使用されるため、ユーザーはタブ/ウィンドウをバックグラウンドで実行することができます。 – theflarenet

答えて

1

私はタイマーが毎分を発射し、それが発火するたびにカウンタを保持するようにスクリプトを変更することをお勧めします。カウンタが25に達すると、25分が経過したことがわかります。このコードは単純ではありませんが、タイマーが起動していない場所で発生した問題は回避されます。

+0

非常に良い回避策です!ありがとうございました!これは私がこれまでに持っていた唯一のオプションだと思われるので、私はこの答えを受け入れるでしょう。しかし、私は他人からの他の選択肢を見たいと思う。 – theflarenet

関連する問題