JavaScript · Senior · Pytanie 59 z 75
Dlaczego ten kod może zamrozić stronę, choć używa promise'ów?
function loop() { Promise.resolve().then(loop); }
loop();- ✓Poprawna odpowiedź: Każde mikrozadanie planuje kolejne, więc kolejka mikrozadań nigdy się nie opróżnia i renderowanie nie następuje
- 2Promise'y działają w osobnym wątku i przeciążają CPU
- 3Nie zamrozi; promise'y ustępują renderowaniu
Wyjaśnienie
Przeglądarka renderuje tylko między makrozadaniami, po opróżnieniu kolejki mikrozadań. Użyj setTimeout, MessageChannel lub scheduler.yield(), by dać szansę renderowaniu.