Вопрос проверяет понимание механизма распространения ошибок в цепочках промисов в JavaScript, что важно для написания надежного асинхронного кода.
Когда промис отклоняется (rejected) или внутри обработчика .then() выбрасывается исключение, JavaScript автоматически передает ошибку по цепочке до первого встречного обработчика .catch(). Это похоже на try...catch, но для асинхронного кода.
Каждый .then() возвращает новый промис. Если предыдущий промис был отклонен, следующий .then() (с обработчиком успеха) будет пропущен, и управление перейдет к .catch(). Если .catch() успешно обработает ошибку и вернет значение, цепочка может продолжиться с помощью дополнительных .then().
fetch('/api/data')
.then(response => response.json())
.then(data => {
if (!data.success) throw new Error('API error');
return data;
})
.catch(err => {
console.error('Error:', err.message);
return { fallback: true };
})
.then(result => {
console.log(result); // { fallback: true } или данные
});Вывод: Используйте .catch() в конце цепочки промисов для централизованной обработки ошибок. Это делает код чище и предотвращает необработанные отклонения, особенно при работе с асинхронными операциями, такими как запросы к API или чтение файлов.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию