Sobes.tech
Назад к вопросам
Middle+
7

Как обработать состояние rejected у промиса, используя .then() и .catch()? Как понять, в каком именно .then() произошла ошибка, и обработать её отдельно?

Компании, где спрашивали
Лига Цифровой ЭкономикиЛига Цифровой Экономики

Ответ от нейросети

sobes.tech 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(), но не даст информации о конкретном месте возникновения ошибки.