SetTimeout - Multithreading?
Gast123
- javascript
Hallo Leute!
Ich habe mal eine explizite Frage zu SetTimeout().
Dazu möche ich folgendes Codebeispiel benutzen:
var i;
function tuwas ()
{
i++
window.setTimeout( function(){tuwas(); }, 1);
i--
(irgendwelcher code der sehr lange dauert)
}
tuwas;()
So nur zur Frage. Wirkt das setTimeout wie ein "break"? Also verlässt der IP nach dem settimout die funktion, bzw. wird i wachsen?
Oder wird tuwas() zig mal aufgerufen und läuft quasi-paralell?
Ich bin dankbar für jede Hilfe !
Grüße Gast
So nur zur Frage. Wirkt das setTimeout wie ein "break"? Also verlässt der IP nach dem settimout die funktion, bzw. wird i wachsen?
Nein, die Funktion läuft weiter. Ein Timeout ruft nach x Millisekunden (in deinem Fall, nach einer), die Funktion auf.
Oder wird tuwas() zig mal aufgerufen und läuft quasi-paralell?
Nicht zig-mal sondern, die Funktion wird zuende ausgeführt und es wird versucht nach einer Millisekunde die Funktion erneut aufzurufen, da es parallel in JS so nicht gibt, wird die Funktion wirklich erst nach dem beenden der ersten aufgerufen.
Wenn du tatsächlich quasi-parallel arbeiten willst, musst du dir workers anschauen
Struppi.
Hello,
So nur zur Frage. Wirkt das setTimeout wie ein "break"? Also verlässt der IP nach dem settimout die funktion, bzw. wird i wachsen?
Nein, die Funktion läuft weiter. Ein Timeout ruft nach x Millisekunden (in deinem Fall, nach einer), die Funktion auf.
Das hat mich immer schon interessiert und ich ahbe nie nachgefragt: Wie muss ich mir das vorstellen? Ist immer nur eine Instanz aktiv? Wirkt sich die mit setTimeout() aufgerufene Funktion also quasi wie ein Interrupt bei einem Realmode-System aus?
Das hieße dann, es läuft immer nur das Hauptprogramm _oder_ _eine_ setTimeout-Routine?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Das hieße dann, es läuft immer nur das Hauptprogramm _oder_ _eine_ setTimeout-Routine?
ja.
Struppi.