Der Event Loop
Teil des Abschnitts Node.js-Grundlagen der Node.js-Journey von Coddy. Lektion 18 von 24.
Callbacks und Promises werden später ausgeführt, und Fehler entstehen, wenn man nicht genau weiß, wann.
Node führt zuerst den gesamten synchronen Code bis zum Ende aus. Dann führt es Microtasks aus: Promise-Callbacks und Funktionen, die an queueMicrotask übergeben werden. Erst danach kommen Timer, selbst setTimeout(fn, 0), jeweils sobald ihre Zeit abgelaufen ist.
setTimeout(() => console.log('C timer'), 0);
Promise.resolve().then(() => console.log('B promise'));
console.log('A sync');
// A sync, B promise, C timerEine Verzögerung von 0 bedeutet: so bald wie möglich nach den Microtasks, niemals davor. Timer werden in der Reihenfolge ihrer Verzögerung ausgelöst; bei gleicher Verzögerung wird der zuerst gesetzte Timer zuerst ausgelöst.
Aufgabe
Einfachorder.jsgibt in dieser Reihenfolge1 sync,2 microtask,3 timeout,4 timeout lateraus.- Lass die vier Zeilen an ihrer Stelle. Umschließe sie mit einem Aufruf von
queueMicrotaskund zwei Aufrufen vonsetTimeout.
Führe node order.js aus und vergleiche das Ergebnis mit deiner Vermutung. Setze dann bei beiden Timern die Verzögerung auf 0 und führe das Programm erneut aus.
Probier es selbst
// Sorge dafür, dass diese Zeilen in numerischer Reihenfolge ausgegeben werden, ohne sie zu verschieben.
// Verpacke sie stattdessen in queueMicrotask und setTimeout.
console.log('4 timeout later');
console.log('3 timeout');
console.log('2 microtask');
console.log('1 sync');
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Node.js-Grundlagen
1JavaScript mit Node ausführen
Hallo, NodeKommandozeilenargumenteBefehle