JavaScript · Senior · Запитання 4 з 75
Чому проміс нижче ніколи не відхилиться?
new Promise((resolve, reject) => {
setTimeout(() => { throw new Error("boom"); }, 0);
});- ✓Правильна відповідь: Виняток у таймері кидається поза виконавцем і не пов'язаний із промісом
- 2
setTimeoutусередині промісу автоматично придушує будь-які винятки - 3Проміс відхилиться, але лише після явного виклику
.catch()
Пояснення
Автоматично на відхилення перетворюються лише синхронні винятки виконавця. Помилка в колбеку таймера виникає пізніше, в окремій задачі: вона стане глобальною необробленою помилкою, а проміс назавжди лишиться pending. Треба викликати reject явно.