JavaScript · Senior · Frage 59 von 75
Warum kann dieser Code die Seite einfrieren, obwohl er Promises nutzt?
function loop() { Promise.resolve().then(loop); }
loop();- 1Jede Microtask plant die nächste, also wird nie gerendert
- 2Er friert nicht ein, weil Promises dem Rendering Vortritt lassen
- 3Promises laufen in einem eigenen Thread und überlasten die CPU
Antwort zeigen
Richtige Antwort: Jede Microtask plant die nächste, also wird nie gerendert
Erklärung
Der Browser rendert nur zwischen Macrotasks, nachdem die Microtask-Warteschlange leer ist. Mit setTimeout, MessageChannel oder scheduler.yield() gibt man dem Rendering eine Chance.