Używam datatable i istnieje możliwość użycia setInterval, aby odświeżyć zawartość tabeli.

Problem polega na tym, że ruch sieciowy zwiększa się, gdy użytkownik pozostaje na tej stronie, a jeśli strona wykonuje spójne przeładowanie co sekundę tego samego zestawu danych.

Chcę przestać po 10 sekundach, ponieważ myślę, że jest to przeciętny czas, w którym użytkownik pozostaje na tej stronie przed wyjazdem gdzieś indziej.

Nie jesteś pewien, jak dołączyć 10 sekund, poniżej jest mój kod do tej pory:

setInterval(function() {
        $('#Table1').DataTable().ajax.reload(null, false);
    }, 1000);
0
Cyber 27 czerwiec 2017, 20:57

4 odpowiedzi

Najlepsza odpowiedź

Po prostu anuluj setInterval po 10 sekundach (przy użyciu setTimeout). Możesz usunąć timer interwałowy przy użyciu clearInterval.

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

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

Asynchroniczny charakter JavaScript umożliwia zarówno setInterval, jak i setTimeout, aby uruchomić w odpowiednich czasach i bez blokowania drugiego.

1
heartyporridge 27 czerwiec 2017, 17:59

Pierwszy var foo = setInterval(...

A następnie zatrzymaj go po 3 sekundach {x0}}

0
EvgenyKolyakov 27 czerwiec 2017, 17:59
var interval = setInterval(function() {
    $('#Table1').DataTable().ajax.reload(null, false);
}, 1000);

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

Przykładowy fragment kodu:

var interval = setInterval(function() {
    console.log("Interval fired");
}, 1000);
    
setTimeout(function() { clearInterval(interval); }, 10000);
    
    
1
Herman L 27 czerwiec 2017, 18:06
var myInterval = setInterval(function() {
        $('#Table1').DataTable().ajax.reload(null, false);
    }, 1000);

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

Sugeruję, aby korzystać z funkcji Setimeout w oddzwaniuniu odpowiedzi Twojej połączenia AJAX i mieć zmienną liczbę, która liczy się do 10 za każdym razem, gdy zostanie wykonana, a Clearedval, gdy liczba osiągnie 10. byłoby bardziej wydajne, jeśli Twoja prośba zajmuje dłuższy czas w procesie.

1
Goku 27 czerwiec 2017, 18:05