2016-06-28 6 views
0

Ich benutze setInterval, um den Inhalt eines Graphen auf der Seite zu aktualisieren. Wie mache ich eine show eine Warnung für den Benutzer, wenn setinterval kurz davor ist zu aktualisieren, dass 'der Inhalt aktualisiert wird'.Wie wird der Benutzer nach 10 Sekunden gewarnt? um setInterval zu aktualisieren?

Zum Beispiel mein Intervall verwendet 300 Sekunden und ich möchte eine Warnung anzeigen, nachdem 290 Sekunden vergangen sind, dass der Inhalt nach 10 Sekunden aktualisiert wird. Möchten Sie das Diagramm für jedes Intervall aktualisieren? Wie macht man das? Irgendwelche Vorschläge?

+2

Die Funktion, die durch 'setInterval' tatsächlich 1 ausgelöst wird) zeigt den Alarm und 2) setzt einen * Timeout * ... nach 10 Sekunden, um tatsächliche Refresh auszulösen!? – deceze

+0

Es wäre einfacher zu helfen, wenn wir den Code sehen würden, bearbeiten Sie Ihre Frage mit mehr Informationen. – Esko

+0

Wenn Sie die Warnung dazwischen anzeigen, wird Ihre Codeausführung angehalten, bis der Benutzer die OK-Schaltfläche der Warnung drückt. – vijayP

Antwort

1

Sie sollten Sie 290000ms eingestellten Intervall, und dann wird es eine Warnung, zeigen und Sie dann setTimeout verwenden, um Ihre Seite nach 10 Sekunden aktualisiert werden, etwa so:

setInterval(function() { 
 
    alert("10 seconds to update") 
 
    setTimeout(function() { 
 
     //REFRESH PAGE 
 
    },5000); 
 
    }, 10000);

+0

In diesem Fall wird das Timeout alle 10 Sekunden aufgerufen. Übrigens ist die Timeout-Zeit auf 5000 eingestellt, warum? –

+0

@ Tamango - richtig? Dies ist nur ein Beispiel, um zu zeigen, wie es funktioniert. Sie müssen also nicht 290 Sekunden warten, bis es funktioniert. Wenn er beschließt, dies zu verwenden, sollte er tun, wie ich oben geschrieben habe, ändern Sie das Intervall von 10000 bis 290000. –

1

So etwas:

var interval; 
var secondsPassed = 0; 
function refreshWithMessage() { 
    interval = setInterval(function(){ 
    if(secondsPassed == 290) { 
     //showMessage with options 
    } 
    if(secondsPassed == 300) { 
     clearInterval(interval); 
     //do what you need here (refresh page?) 
    } 
    secondsPassed++; 
    }, 1000) 
} 

Wenn Sie Benutzer müssen das Intervall lassen abzubrechen - Sie müssen nur klar Intervall sollte und dann Sekunden zurückgesetzt Variable auf 0

1

Auf dem Laden der Seite können Sie Ihr 290 Sekunden aktualisieren setzen

setInterval(function(){ 
    showDialogBox("do you want to refresh"); 
}, 290000); 

und dann eine Aktion auf der Bestätigungstaste hinzufügen, die die letzten 10sec

confirmButtonOnClick(){ 
    setInterval(function(){ 
     refresh(); 
    }, 10000); 
} 
1

In Fällen wie diesem wird verzögert , Bevorzuge ich setTimeout über setInterval, da es bessere Kontrolle gibt.

Also setze ich zwei Timer - einen für die Warnung und dann einen anderen für das Timeout selbst, dann starte ich die zwei Timer neu.

const timeoutWarning = 1800; 
 
const timeoutDone = 2000; 
 

 
function showWarning() { 
 
    console.log('About to time out...'); 
 
} 
 

 
function doTimeout() { 
 
    console.log('Timeout reached'); 
 
    setWarnings(); 
 
} 
 

 
function setWarnings() { 
 
    setTimeout(showWarning, timeoutWarning); 
 
    setTimeout(doTimeout, timeoutDone); 
 
} 
 

 
setWarnings();

+0

Vielen Dank das ist, was genau ich gefragt habe – mayk

Verwandte Themen