Middle+
Cum să gestionezi starea de respingere a unei promisiuni folosind .then() și .catch()? Cum să înțelegi în care .then() a avut loc eroarea și să o tratezi separat?
sobes.tech AI
Răspuns de la AI
Для обработки отклонённого (rejected) состояния промиса можно использовать как .then(), так и .catch().
.then(onFulfilled, onRejected)— второй аргумент обрабатывает ошибку..catch(onRejected)— обрабатывает ошибку, если она произошла в любом предыдущем.then().
Чтобы понять, в каком именно .then() произошла ошибка, можно разделить цепочку и добавить обработчики ошибок после каждого .then(). Например:
promise
.then(result => {
// обработка результата
return nextStep(result);
})
.catch(error => {
console.error('Ошибка в первом then:', error);
throw error; // проброс ошибки дальше
})
.then(nextResult => {
// следующий шаг
})
.catch(error => {
console.error('Ошибка во втором then:', error);
});
Такой подход позволяет локализовать обработку ошибок и понять, где именно произошла ошибка.
Если использовать только один .catch() в конце, то он поймает ошибку из любого .then(), но не даст информации о конкретном месте возникновения ошибки.