Zurück zu JavaScript

JavaScript

Event Loop

JavaScript hat einen einzigen Thread. Der Event Loop entscheidet, wann Callbacks, Promises und Timer laufen.

Call Stack und Queue

Synchroner Code läuft auf dem Call Stack, eine Funktion nach der anderen.

Asynchrone Ergebnisse (Timer, fetch) landen in Warteschlangen. Der Event Loop schiebt sie erst auf den Stack, wenn er leer ist.

<call stack><event loop>

Micro- vs. Macrotasks

Promise-Callbacks sind Microtasks und laufen vor dem nächsten Macrotask (setTimeout).

Deshalb kommt "Promise" vor "Timeout" — auch bei 0 Millisekunden.

<microtask><macrotask>
Reihenfolge
console.log('1: sync');

setTimeout(() => console.log('4: timeout'), 0);

Promise.resolve().then(() => console.log('3: promise'));

console.log('2: sync ende');
// Ausgabe: 1, 2, 3, 4

Fortschritt

Markiere die Lektion als abgeschlossen, um XP und Streak zu erhalten.