Was sind Makro- und Mikroaufgaben?
sobes.tech KI
Antwort von AI
Makroaufgaben sind große, hochrangige Phasen der Browserarbeit, wie HTML-Parsing, DOM-Erstellung, CSSOM-Erstellung, Stilberechnung, Renderbaumaufbau, Layout, Paint und Composition. Sie bilden die Hauptpipeline des Renderings.
Mikroaufgaben sind kleinere, detailliertere Aktionen, die nach Abschluss der aktuellen Makroaufgabe und vor Beginn der nächsten ausgeführt werden. Dazu gehören die Verarbeitung von Promises (Promise), MutationObserver, queueMicrotask.
Der entscheidende Unterschied ist, dass Mikroaufgaben immer sofort nach der aktuellen Makroaufgabe ausgeführt werden, während die nächste Makroaufgabe (z.B. der nächste Render-Frame oder das Timer-Ereignis setTimeout) erst ausgeführt wird, wenn die Mikroaufgabenwarteschlange leer ist.
Beispiel für die Ausführungsreihenfolge:
// Makroaufgabe (Anfangscode)
console.log('Start');
// Makroaufgabe (Timer)
setTimeout(() => {
console.log('Timer');
}, 0);
// Mikroaufgabe (Promise)
Promise.resolve().then(() => {
console.log('Promise');
});
// Makroaufgabe (Ende des Anfangscodes)
console.log('Ende');
Ausgabe in der Konsole:
Start
Ende
Promise
Timer
Ausführungsreihenfolge:
- Die initiale Makroaufgabe (Hauptskript) wird ausgeführt.
console.log('Start').setTimeoutlegt die Makroaufgabe in die Warteschlange.Promise.resolve().then()legt die Mikroaufgabe in die Warteschlange.console.log('Ende').- Die Hauptmakroaufgabe ist beendet.
- Die Mikroaufgabenwarteschlange wird geprüft:
Promise.resolve().then()wird ausgeführt. console.log('Promise').- Die Mikroaufgabenwarteschlange ist leer.
- Der Browser verarbeitet die Aufgaben im Event-Loop, geht zur nächsten Makroaufgabe.
- Die Makroaufgabe von
setTimeoutwird verarbeitet. console.log('Timer').- Die Makroaufgabe ist beendet.
Dieses Verständnis ist wichtig, um die Reihenfolge der Ausführung asynchroner Operationen zu steuern und das Verhalten des Event Loops zu verstehen.