JavaScript · Senior · Запитання 59 з 75
Чому цей код може заморозити сторінку, хоч використовує проміси?
function loop() { Promise.resolve().then(loop); }
loop();- ✓Правильна відповідь: Кожна мікрозадача планує наступну, черга мікрозадач ніколи не порожніє, і рендер не відбувається
- 2Проміси виконуються в окремому потоці й перевантажують CPU
- 3Не заморозить; проміси поступаються рендеру
Пояснення
Браузер рендерить лише між макрозадачами після спорожнення черги мікрозадач. Використовуйте setTimeout, MessageChannel або scheduler.yield(), щоб дати шанс рендеру.