2017-01-24 103 views
0

我有一個setTimeout函數,它啓動25分鐘並重置/重新啓動接下來的25分鐘。當我將其從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