Timer realisieren mit setTimeout
Philipp
- javascript
Hallo
Ich moechte dass mir alle 20 Sekunden wieder eine Javascriptfunktion aufgerufen wird, das schaut bei mir dann folgendermassen aus:
var t;
function XMLRequest(mode){
//do something;
t = setTimeout("XMLRequest('get_users')",20000);
}
Das funktioniert eigentlich ganz gut, das Problem ist nur dass ich diese Funktion auch durch druecken eines Buttons aufrufen kann wenn ich nicht die 20 Sekunden warten moechte. Ich habe mir gedacht, dass dann das alte t durch die neue Zuweisung ueberschrieben wird. Aber das scheint nicht der Fall zu sein, es scheint als ob alle gesetzten Timeouts ausgefuehrt werden... Hat hier jemand eine Idee wie ich alte timeouts t ueberschreiben kann?
Danke
Philipp
Hallo,
du solltest vielleicht einen Dauerthread abonnieren, oder dir einen eigenen Developer leisten.
gruss
Hallo,
du könntest vielleicht ein neues (globales) Array deklarieren.
var t = new Array();
und die Timeouts dann über
t.push( setTimeout("XMLRequest('get_users')",20000) );
hinzufügen, sodass du noch später auf die alten Timeout-Variablen zurückgreifen kannst. Vorrausgesetzt, "setTimeout()" gibt sowas wie ein "timeout-Objekt" zurück, über das du den Timeout steuern kannst (was ich nicht glaube).
MfG Benjamin
Hallo Philipp,
du kennst clearTimeout? Evtl. wäre auch das Paar setInterval / clearInterval für dich interessant. Siehe: http://de.selfhtml.org/javascript/objekte/window.htm
Gruß, Jürgen