lavezzi1
@lavezzi1

Вопрос по промисам, что я упустил?

Всем привет. Столкнулся с такой штукой в промисах:

Если абстрактно, есть экшен который возвращает промис:
login() {
  return fetch('api/login/', { method: 'POST', body: JSON.stringify({ email, password })})
      .then(() => commit(LOGIN_SUCCESS))
      .catch(err => window.console.log(err));
}

Дальше используем этот промис так:
login()
  .then(() // ПОЧЕМУ КОД ЗДЕСЬ ОТРАБАТЫВАЕТ ДАЖЕ КОГДА ПРОИЗОШЛА ОШИБКА В FETCH В ЭКШЕНЕ?)
  .catch(() => // ЗДЕСЬ КОД ВООБЩЕ НЕ ВЫЗЫВАЕТСЯ НЕ ПРИ КАКИХ СЛУЧАЯХ);


Проблема: во втором блоке, в then() когда отрабатывает ВСЕГДА даже если fetch зафейлился с ошибкой 400. почему? Также код в блоке catch не отрабатывает вообще, хотя по идеи там и должен срабатываться код при ошибке.

Моя догадка заключается в том, что проблема из за того что я ресолвлю возвращаемый промис в экшене. Я прав?
  • Вопрос задан
  • 169 просмотров
Решения вопроса 1
zo0m
@zo0m
full stack developer
так вы уже обработали ошибку выше, внутри login() функции.
Пробросьте ошибку дальше а не просто пишите в лог.
.catch(err => {
window.console.log(err);
throw err;
}
);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы