Camping_RIDER: setInterval

Beitrag lesen

Aloha ;)

Aber warum würdest du mir setTimeout empfehlen? Es mag einfacher sein aber von der Performance her ist das doch recht arbeitsintensiv oder nicht?

Einfach deshalb, weil man damit um das elendige clearen des Interval und damit um die Speicherung des Interval-Handle drumrumkommt. Ganz zu schweigen vom index-Parameter. Du siehst auch, dass du im Gegensatz zur setInterval-Methode bei der setTimeout-Methode um das Setzen globaler Counter-Variablen herumkommst (und ein Setzen globaler Variablen sollte imho immer bedeutungsvoll und mit Bedacht und nicht wie hier "einfach so" geschehen). Dadurch kann jeder durch setTimeout angeleierte Prozess als in sich abgeschlossene Sache betrachtet werden, du musst nie die Angst haben, dass der mit anderen interferiert.

Grundsätzlich ist ein setTimeout imho nicht arbeitsintensiver als ein setInterval, mich würde es wundern, wenn setInterval intern irgendetwas anderes wäre als die Mechanik, die auch bei setTimeout zum Zuge kommt - nur, dass bei setInterval unendlich viele Timeouts (bzw. deren interne Repräsentation) aneinandergereiht werden. Wenn, dann unterscheidet sich das ganze darin, dass bei setTimeout bei jedem step eine neue anonyme Funktion (innerhalb des setTimeout) definiert wird, während setInterval wahrscheinlich jedesmal die selbe anonyme Funktion abarbeitet, der dadurch entstehende overhead ist aber wirklich vernachlässigbar.

Für mich - aber das ist wirklich nur persönliche Vorliebe - ist es so, dass ich mit setInterval nur diejenigen Dinge realisiere, die tatsächlich unendlich oft wiederholt werden sollen. Dabei handelt es sich dann auch um Dinge, die tatsächlich vom einen zum anderen Schritt nicht direkt aufeinander aufbauen (z.B. das wiederholte Refreshen eines bestimmten Content etc.); für alle Dinge, die endlich ablaufen, und insbesondere für aufeinander aufbauende Schritte (wie du es hier gegeben hast), benutze ich lieber von vornherein setTimeout und baue meine Funktion dann so, dass sie alle wichtigen Infos per Parameter an den nächsten Schritt weitergeben kann (wie in meinem Codebeispiel).

Grüße,

RIDER

--
Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[