2017-06-27 3 views
0

Ich verwende Datentabelle und es gibt eine Option setInterval zu verwenden, um den Tabelleninhalt zu aktualisieren.Wie kann das Nachlade-Intervall nach einer Sekunde angehalten werden?

Das Problem ist, dass der Netzwerkverkehr zunimmt, wenn der Benutzer auf dieser Seite bleibt und wenn die Seite jede Sekunde des gleichen Datensatzes konsistent neu lädt.

Ich möchte nach 10 Sekunden aufhören, weil ich denke, das ist die durchschnittliche Zeit, die ein Benutzer auf dieser Seite bleibt, bevor er woanders hingeht.

nicht sicher, wie die 10-Sekunden-Timeout zu schließen, unten ist mein Code so weit:

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

Antwort

1

einfach brechen Sie den setInterval nach Ablauf von 10 Sekunden (unter Verwendung von setTimeout). Sie können einen Intervall-Timer mit clearInterval löschen.

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

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

Die asynchrone Natur von JavaScript ermöglicht sowohl setInterval und setTimeout zu den entsprechenden Zeiten laufen und ohne eine die andere zu blockieren.

+0

Auch funktioniert. Vielen Dank. – Cyber

0

Erste var foo = setInterval(...

und es dann halt nach 3 Sekunden setTimeout(function(){ clearInterval(foo); }, 3000);

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

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

Beispiel Code-Schnipsel:

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

+0

Während dieses Code-Snippet die Frage lösen kann, hilft [einschließlich einer Erklärung] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, die Qualität Ihres Posts zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch nicht, Ihren Code mit erklärenden Kommentaren zu füllen, dies reduziert die Lesbarkeit sowohl des Codes als auch der Erklärungen! –

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

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

Ich schlage vor, dass Sie eine setTimeout-Funktion in der Antwort Rückrufs des Ajax-Aufruf verwenden und eine Zählvariable haben, die zählt jedes Mal, wenn setTimeout ausgeführt wird, auf 10 und clearInterval, wenn die Anzahl 10 erreicht. Dies wäre effizienter, wenn Ihre Anfrage länger dauert o Prozess.

+0

Danke, das ist es. – Cyber

Verwandte Themen