window.setTimeout, heißt das rekursiv ?
Stefan Ehrenreich
- programmiertechnik
0 mech0 Christian Kruse
hi alle
wenn ich window.setTimeout verwende, und eine funktion immer wieder sich selbst aufrufen lasse, rufe ich diese funktion doch rekursiv auf, d.h. bei jedem aufruf werden die variablen usw der funktion aufs neue gespeichert und ich mülle langsam aber sicher den speicher voll.
oder lieg ich da falsch ? falls nein, gibt es eine andere möglichkeit, eine funktion immer wieder zeitgesteurt aufzurufen ?
gruß stefan
moin
sofern du die in der funktion verwendeten variablen global definierst passiert das soweit ich weiß nich
selbst wenn, ich denke nicht, dass die funktion solch immense daten verarbeitet, dass letztendlich die rechenleistung leidet
ich denke mal dass das nichmal nach 2 tagen der fall sein würde
gruß
Hallo mech,
selbst wenn, ich denke nicht, dass die funktion solch
immense daten verarbeitet, dass letztendlich die
rechenleistung leidetich denke mal dass das nichmal nach 2 tagen der fall
sein würde
Unfug. Gängige JS-Interpreter können Rekursions-Tiefen von
etwa 256 Stufen erreichen. Die genaue Zahl ist abhängig vom
Browser.
Grüße,
CK
hi
ich danke euch beiden für die flotte antwort (gibt wohl mehr leute mit schlafstörungen wie mich ;o) )
ich komm halt von der programmiererseite her, und es wirkt wie ein rekursiver aufruf, wirklich vorstellen konnte ich's mir aber auch nicht, wär' ja ziemlicher unsinn.
trotzdem beruhigt mich die kompetente bestätigung.
danke und gruß stefan
Moin!
Unfug. Gängige JS-Interpreter können Rekursions-Tiefen von
etwa 256 Stufen erreichen. Die genaue Zahl ist abhängig vom
Browser.
Nein. Das müssen bedeutend mehr sein. Ich hatte mal ein Skript, welches, mit Timeout aufgerufen, etliche Rekursionen mehr gemacht hat. Also sind wahrscheinlich auch rekursive Funktionsaufrufe in _weitaus_ höherer Zahl möglich.
Es waren wohl ca. 10 Sekunden "Drehbuch" bei Aufruf aller 0.02 Sekunden. Macht dann ca. 500 Rekursionen. Lief im IE und Netscape... wenn der Rechner + Grafik schnell genug war. Ich kann ja mal suchen gehen, müsste irgendwo archiviert sein.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Moin!
Alles klar. Ich habe den Unterschied weiter oben in Deiner Erklärung gefunden.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hallo Stefan,
wenn ich window.setTimeout verwende, und eine funktion
immer wieder sich selbst aufrufen lasse, rufe ich diese
funktion doch rekursiv auf,
Nein. Du benutzt einen Timer, um eine Funktion aufzurufen,
das ist ein Unterschied. Hierbei wird der Stack immer wieder
gelöscht. Bei einer Rekursion nicht, da bleibt der Stack
der aufrufenden Funktion erhalten.
d.h. bei jedem aufruf werden die variablen usw der funktion
aufs neue gespeichert und ich mülle langsam aber sicher
den speicher voll.
Eben nicht :) Die lokalen Variablen werden nach jedem
Durchlauf wieder freigegeben.
Grüße,
CK