Übersicht aller gesetzten Timeouts?
Yeti
- javascript
Hallo zusammen,
ich habe für unsere tolle Webzwonull-Anwendung mehrere Timer mit window.setTimeout gesetzt, die dafür sorgen, dass einzelne Seitenbereiche automatisch aktualisiert werden. So weit, so gut.
Leider sollen Benutzer auch manuell die Seitenbereiche aktualisieren dürfen, wenn sie ungeduldig sind. Damit das nicht dazu führt, dass ein neuer Timer gestartet wird, behalte ich alle Timeout-IDs in einem globalen Array und stoppe jeden Timer, bevor ich ihn neu setze. Das klappt aber nicht so wie gewünscht, also obwohl ich eigentlich für jeden Seitenbereich nur ein Timeout gleichzeitig laufen haben (sollte), aktualisiert der Browser (Firefox 3) schon mal dreimal hintereinander, wenn man dreimal auf "Aktualisieren" geklickt hat.
Gibt es eine Möglichkeit, alle laufenden Timeouts aufzulisten und so das Ganze besser zu debuggen?
Wenn nicht, welche Workarounds gäbe es?
Vielen Dank im Voraus!
Der Yeti
P.S.: Code
function StartUpdate(id, updateFrequency) {
if (updater[id] != undefined)
window.clearTimeout(updater[id]);
updater[id] = window.setTimeout('CheckForUpdate('+id+')', updateFrequency);
}
Alle Aufrufe des Timers laufen nur über StartUpdate().
Hallöchen,
... aktualisiert der Browser (Firefox 3) schon mal dreimal hintereinander, wenn man dreimal auf "Aktualisieren" geklickt hat.
... und macht damit genau das, was man ihm gesagt hat - oder?
Was passiert als Erstes nach Klick auf "Aktualisieren"?
Wenn es der Timer-Reset ist, dann bau doch einfach ein, dass es eine Mindest-Laufzeit geben muss.
Die Wirkung sollte dann sein, dass frühestens nach Ablauf dieser Mindest-Laufzeit die Seite neu geladen wird.
MfG
vaudi
Hi,
... und macht damit genau das, was man ihm gesagt hat - oder?
Tut mir leid, da habe ich mich unklar ausgedrückt. Natürlich soll er die Aktualisierung einmalig vornehmen, aber dann keinen neuen Timeout starten, um alle 2 Minuten dreimal hintereinander zu aktualisieren.
Was passiert als Erstes nach Klick auf "Aktualisieren"?
Er führt "StartUpdate(id, 500)" aus.
Wenn es der Timer-Reset ist, dann bau doch einfach ein, dass es eine Mindest-Laufzeit geben muss.
Die Wirkung sollte dann sein, dass frühestens nach Ablauf dieser Mindest-Laufzeit die Seite neu geladen wird.
Das könnte natürlich funktionieren, das probiere ich mal aus. Danke!
Der Yeti