2012-10-17 121 views
2

目前在我的網頁後,停止我有一個運行的功能,每30秒計時器:如何設置的時間間隔,但隨後20分鐘

setInterval("someFunction(userId)", 30000); 

這工作得很好,但問題是,如果100的用戶將他們的瀏覽器打開(比如說他們去吃午餐時),它會調查我們的系統並無故增加我們服務器上的負載。

如何在20分鐘後停止運行此計時器?

+1

將函數傳遞給'setInterval',而不是字符串。 – Quentin

+0

不要使用字符串作爲'setInterval'或'setTimeout'的第一個參數 – Andreas

+0

@Quentin字符串有什麼問題?現在工作正常嗎? – loyalflow

回答

9

20分鐘就超時設置爲清除間隔:

var interval = setInterval(function() { 
    someFunction(userId); 
}, 30000); 

setTimeout(function() { 
    clearInterval(interval); 
}, 1000 * 60 * 20); 
+2

我建議在代碼中加入事件監聽器,否則代碼會在20分鐘後停止運行,即使用戶正在使用該站點。 –

0

設置你作爲一個變量區間。

設置另一個定時器來重置該時間間隔,或者在20分鐘後爲您的輪詢腳本設置一個禁用標誌。

2

當您撥打setInterval時,會得到一個返回的值,它是運行時間間隔的句柄。

所以解決的辦法是安排另一個關閉,這將防止運行此區間:

var interval = setInterval("someFunction(userId)", 30000); 
setTimeout(function(){ clearInterval(interval) }, 20 * 60 * 1000); 
0

試試這個:

var intervalId= setInterval(function(){ 
    someFunction(userId); 
}, 30000); 

setTimeout(function(){ 
    clearInterval(intervalId); 
},20*60*1000); 

setInterval返回intervalId,你可以用它來傳遞稍後再到clearInterval

相關問題