Javascript Funktion jede Sekunde automatisch ausführen lassen?
Ich möchte in meinem Javascript Code eine Funktion jede Sekunde ausführen lassen. Wie ist das möglich?
Danke für eure Antworten.
3 Antworten
setInterval( deineFunktion, 1000 );
function deineFunktion(...) {
...
}
Geht natürlich auch mit Arrow-Function:
setInterval( () => {
...
}, 1000 ;
Oder ganz altmodisch:
setInterval( function() {
...
}, 1000 );
Es gibt zwei Wege, setTimeout und setIntervall.
setIntervall macht genau das was du willst, es führt eine Funktion alle X Sekunden aus.
setTimeout führt eine Funktion verzögert aus. Manchmal ist es besser setTimeout zu nutzen und das dann wieder aufzurufen nachdem die Funktion durchgelaufen ist. Das stellt sicher, dass die Funktion nicht zwei mal gleichzeitig laufen kann wenn die Funktion z.B. länger braucht weil man teilweise irgendwelche Netzwerk Requests macht.
https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout
https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval
Ja, aber ohne zu wissen was für eine Funktion es ist und wie der Anwendungsfall ist kann man nicht sagen ob man lieber setIntervall oder setTimeout nutzen sollte, deswegen bin ich auf den Unterschied eingegangen. Das was du beschreibst würde ich auch mit setIntervall machen.
Dann habe ich vielleicht die Frage etwas schwammig gestellt :)
while(true) {
setInterval(foo, 1000);
}
sorry, die while Schleifr brauchst du nur bei setTimeout. Habs verwechselt
Warte, ich mach ne neue frage hier, mit deinem code und es kommen sofort 100 antworten mit dem titel: "mach doch sowas nicht"
also die while schleife wird unendlich oft mal ausgeführt , und diverse settimeouts gestartet und die machen jeweils nach einer sekunde was ?
da hält ja nix an bei settimeout ...
ergo das werden schon in der ersten sekunde soviele timeouts das dein javascript sich aufhängt .
du spammst dein stack und damit wird dein javascript ins reich der "overflows" rennen .
Danke für deine Antwort habe aber nach so etwas wie setIntervall gefragt. Ich wollte eine if Abfrage dort einbinden die abfragt, ob eine bestimmte Variable true ist. Wenn dies so ist dann soll eine andere Variable erhöht werden. (Jede Sekunde halt)