JavaScript · Senior · Pytanie 2 z 75
Co stanie się ze stroną?
function loop() {
Promise.resolve().then(loop);
}
loop();- ✓Poprawna odpowiedź: Strona się zawiesi: mikrozadania są dodawane bez końca, a renderowanie nigdy nie następuje
- 2Nic złego: przeglądarka zdąży narysować klatki między mikrozadaniami
- 3
RangeError: Maximum call stack size exceededz powodu rekurencji
Wyjaśnienie
Stos nie rośnie (każde wywołanie to osobne mikrozadanie), więc przepełnienia nie ma. Ale kolejka mikrozadań nigdy się nie opróżnia, a event loop nigdy nie przechodzi do renderowania ani zdarzeń. Z setTimeout(loop) strona pozostałaby responsywna.