2017-06-27 56 views
0

我正在使用數據表,並且有一個選項使用setInterval來刷新表內容。如何在x秒後停止重新加載間隔?

問題是,當用戶停留在該頁面上時,網絡流量正在增加,並且該頁面每隔一秒鐘對同一數據集進行一致的重新加載。

我想在10秒後停止,因爲我認爲這是用戶在去其他地方之前停留在該頁面上的平均時間。

不知道如何將其納入10秒超時,下面是我到目前爲止的代碼:

setInterval(function() { 
     $('#Table1').DataTable().ajax.reload(null, false); 
    }, 1000); 

回答

1

後停止乾脆取消了setInterval 10秒後通過(使用setTimeout)。您可以使用clearInterval清除間隔計時器。

var refreshInterval = setInterval(function() { 
    $('#Table1').DataTable().ajax.reload(null, false); 
}, 1000); 

setTimeout(function() { 
    clearInterval(refreshInterval); 
}, 1000 * 10); 

的JavaScript的異步性質使兩者setIntervalsetTimeout到在適當的時間和在沒有一個阻塞其它運行。

+0

也在工作。謝謝。 – Cyber

0

首先var foo = setInterval(...

然後3秒setTimeout(function(){ clearInterval(foo); }, 3000);

1
var interval = setInterval(function() { 
    $('#Table1').DataTable().ajax.reload(null, false); 
}, 1000); 

setTimeout(function() { clearInterval(interval); }, 10000); 

示例代碼片段:

var interval = setInterval(function() { 
 
    console.log("Interval fired"); 
 
}, 1000); 
 
    
 
setTimeout(function() { clearInterval(interval); }, 10000); 
 
    
 

+0

儘管此代碼片段可能會解決問題,但[包括解釋](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! –

1
var myInterval = setInterval(function() { 
     $('#Table1').DataTable().ajax.reload(null, false); 
    }, 1000); 

setTimeout(function() { 
    clearInterval(myInterval); 
}, 10000); 

我建議你在你的Ajax調用的響應回調使用setTimeout函數,並有一個統計計數變量每次執行setTimeout時爲10,而當計數達到10時爲clearInterval。如果您的請求需要更長的時間t,這將更有效o過程。

+0

謝謝,就是這樣。 – Cyber