Sobes.tech
Middle+
31

.then() және .catch() арқылы уәделің rejected күйін қалай өңдеуге болады? Қай .then()-да қате болғанын қалай түсінуге және оны бөлек өңдеуге болады?

Сұралған компаниялар
Лига Цифровой ЭкономикиЛига Цифровой Экономики

AI-дан жауап

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