Javascript setTimeout Wiederholungen?
Schaut mal bitte folgendes Beispiel
var update=0;
function ReloadFunktionen()
{
console.log(update);
update=setTimeout(ReloadFunktionen, 1000);
}
ReloadFunktionen();
Die console.log Info zeigt mir das der Wert der Variable "update" am steigen ist, die Zahl wird immer groeser, ich frage mich ob dadurch mit der Zeit vielleicht der Browser immer mehr Speicher verbraucht, ob ich das falsch aufgebaut habe oder ob das normal ist das die Zahl welche setTimeout zurueck gibt immer weiter steigt.
Im Prinzip will ich das ganze als Endlosschleife benutzen damit bestimmte Funktionen immer wieder neu aufgerufen werden nach Ablauf von paar Sekunden.
3 Antworten
Das ist völlig normal:
https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#return_value
setTimeout() liefert die Identifikationsnummer des neu angelegten Timers zurück. Identifikationsnummern werden am einfachsten durch Hochzählen generiert.
-----
Wenn die JavaScript-Engine effektiv programmiert ist (davon ist auszugehen), wird der Timer tatsächlich wiederverwertet. Allerdings bekommt er jedesmal eine neue Identifikationsnummer, damit er nicht versehentlich mit einer alten angesprochen wird, in dem Glauben, er hätte noch dieselben Einstellungen wie damals.
Also: auch steigenen Speicherverbrauch brauchst du nicht zu fürchten. (Oder nur bei sehr alten Browsern.)
Ist vollkommen okay!
Der Return-Wert von setTimeout() ist die Timer-ID. Mit dieser kannst du verschiedene Timer unterscheiden.
Mit clearTimeout() und der ID könntest du den Timer stoppen, bevor er abläuft.
Es gäbe alternativ noch:
setInterval()