Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Hast du meinen Beitrag oben gelesen?
setInterval: Etwas immer wieder ausführen, z. B. jede Sekunde.
setTimeout: Etwas einmalig ausführen nach Ablauf einer gewissen Zeit, z. B. nach einer Sekunde.
Administrator
Aber irgendwie kann das doch nicht wirklich so sein, das die "setTimeout" etwas nur einmallig aufruft, weil man stellt dort doch die Anzahl an Millisekunden ein und nach Ablauf der Zeit ruft die "setTimeout" Funktion doch wieder die verlinkte Funktion auf, also es wird doch damit auch immer wieder wiederholt?
Geht auch (du solltest das XMLHttpRequest-Objekt aber innerhalb der Funktion erzeugen und nicht global), halt ohne jQuery. Wenn du eh schon jQuery nutzt, kannst du es auch für Ajax benutzen. jQuery ist bequemer, macht einige Magic im Hintergrund und versucht dich ein wenig vor inkonsistentem Verhalten der verschiedenen Browser zu schützen.
Administrator
Wenn ich das "XMLHttpRequest" Objekt innerhalb der Funktion erstelle, wuerde das nicht auch dazu fuehren das es immer wieder neu erstellt wird, wenn ich diese Funktion dann mit "setTimeout" oder "setInterval" ofter aufrufen lasse?
Aber insgesamt wuerdest du doch eher zum Benutzen der Jquery Funktion raten, weil die einfach irgendwo ausgereifter ist oder?
Aber irgendwie kann das doch nicht wirklich so sein, das die "setTimeout" etwas nur einmallig aufruft, weil man stellt dort doch die Anzahl an Millisekunden ein und nach Ablauf der Zeit ruft die "setTimeout" Funktion doch wieder die verlinkte Funktion auf, also es wird doch damit auch immer wieder wiederholt?
Doch, genau so ist es aber. Ich sehe das Problem nicht.
Im einen Fall wird deine Funktion regelmäßig aufgerufen, z. B. jede Sekunde, im anderen Fall einmalig nach Ablauf der angegebenen Zeit und danach nicht mehr.
Administrator
Das kann doch aber nicht sein, ich benutze doch "setTimeout" und sehe doch das man damit ein regelmaessiges Aufrufen erzeugt, die Funktion welche ich an "setTimeout" uebergebe wird immer wieder neu aufgerufen, nach Ablauf der eingestellten Zeit, deswegen ist es hier etwas schwer zu verstehen, weil "setInterval" scheint das gleiche zu tun, aber irgendwo scheint es auch ein Unterschied zu geben.
Quellcode |
|
1 |
i = 0; setTimeout(function() { console.log("Aufruf Nr. " + (++i)); }, 1000); |
Quellcode |
|
1 |
i = 0; setInterval(function() { console.log("Aufruf Nr. " + (++i)); }, 1000); |
Das kann doch aber nicht sein, ich benutze doch "setTimeout" und sehe doch das man damit ein regelmaessiges Aufrufen erzeugt, die Funktion welche ich an "setTimeout" uebergebe wird immer wieder neu aufgerufen, nach Ablauf der eingestellten Zeit, deswegen ist es hier etwas schwer zu verstehen, weil "setInterval" scheint das gleiche zu tun, aber irgendwo scheint es auch ein Unterschied zu geben.
Nein, das ist definitiv nicht so.
Drück mal F12 und gib in der Konsole ein:
Quellcode
1 i = 0; setTimeout(function() { console.log("Aufruf Nr. " + (++i)); }, 1000);
--> nur eine einzige Ausgabe nach einer Sekunde
Und dann probier zum Vergleich:
Quellcode
1 i = 0; setInterval(function() { console.log("Aufruf Nr. " + (++i)); }, 1000);
--> jede Sekunde eine neue Ausgabe
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var Zaehler=0; function Test() { Zaehler++; } function ServerFunktion() { Test(); console.log("Zaehler "+Zaehler); //---- 1000 = 1 sekunde setTimeout(ServerFunktion, 2000); } |
Administrator
Werbeanzeige