如何在x秒后停止重载间隔?

时间:2017-06-27 17:57:10

标签: javascript jquery datatable

我正在使用datatable,并且可以选择使用setInterval来刷新表格内容。

问题是,当用户停留在该页面上时,网络流量正在增加,并且如果页面在同一数据集的每一秒都进行一致的重新加载。

我想在10秒后停止,因为我认为这是用户在去往其他地方之前停留在该页面上的平均时间。

不确定如何包含10秒超时,以下是我的代码:

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

4 个答案:

答案 0 :(得分:1)

通过10秒后,只需取消setInterval(使用setTimeout)。您可以使用clearInterval清除间隔计时器。

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

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

JavaScript的异步特性使setIntervalsetTimeout能够在适当的时间运行,而不会阻挡另一个。

答案 1 :(得分: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);
    
    




答案 2 :(得分:1)

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

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

我建议你在Ajax调用的响应回调中使用setTimeout函数,并且每次执行setTimeout时都有一个计数变量计数为10,而当count计数达到10时,则计数为clearInterval。如果你的请求需要,这将更有效更长的处理时间。

答案 3 :(得分:0)

首先var foo = setInterval(...

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

之后停止它