Ja, wenn du setTimeout ausführst, so wird nicht gewartet, bis die Zeit abgelaufen ist, sondern die Funktion kehrt sofort zurück, und erst nach dem Timeout wird die angegeben Funktion aufgerufen.
Beispiel:
gibt "drei zwei eins" aus, da die Funktion setTimeout sofort zurück kehrt.
Ich glaube gelesen zu haben, dass JavaScript kein echtes Multithreading untersützt.
Beispiel:
Dieses Script gibt 3 Sekunden lang "zwei" aus, und soll nach 0.1sekunden "eins" ausgeben. Tut es aber nicht, es gibt "eins" erst aus, nachdem es 3 Sekunden lang "zwei" ausgegeben hat.
Beispiel:
HTML:
function a() {
window.setTimeout( function() { document.write( "eins" ); }, 1000 );
document.write( "drei" );
}
function b() {
document.write( "zwei" );
}
a(); b();
gibt "drei zwei eins" aus, da die Funktion setTimeout sofort zurück kehrt.
Ich glaube gelesen zu haben, dass JavaScript kein echtes Multithreading untersützt.
Beispiel:
HTML:
<html><body><div id='text'></div><script>
function write( text ) {
document.getElementById( "text" ).innerHTML += text;
}
function a() {
window.setTimeout( function() { write( "eins" ); }, 100 );
write( "drei" );
}
function b() {
var start = new Date().getTime();
while( new Date().getTime() - start < 3000 )
write( "zwei " );
}
a(); b();
</script></body></html>