2017-06-27 12 views
0

私はdatatableを使用しています。テーブル内容を更新するためにsetIntervalを使用するオプションがあります。リロード間隔をx秒後に停止する方法は?

問題は、ユーザーがそのページにとどまり、同じデータセットの1秒ごとに一貫したリロードを行っている場合にネットワークトラフィックが増加していることです。

私は10秒後に停止したいと思っています。これは、ユーザーが他の場所に行く前にそのページに滞在していた平均時間だと思います。

ない以下、10秒のタイムアウトを含めてどのようにしてくださいは、これまでの私のコードです:

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

答えて

1

後にそれを止めます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(...

、その後、単に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に設定され、countが10に達するとclearIntervalになります。これは、リクエストがより長い時間tプロセス。

+0

ありがとう、これはそれです。 – Cyber

関連する問題