Всем привет. Столкнулся с такой штукой в промисах:
Если абстрактно, есть экшен который возвращает промис:
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 не отрабатывает вообще, хотя по идеи там и должен срабатываться код при ошибке.
Моя догадка заключается в том, что проблема из за того что я ресолвлю возвращаемый промис в экшене. Я прав?