Будет ли внешний .catch () работать для всех цепочек / вложенных обещаний?
У меня есть небольшой процесс входа в систему, который основывается на 3 вызовах API, который выглядит следующим образом:
export const authenticationSignIn = (email, password) =>
(dispatch) => {
dispatch({ type: AUTHENTICATION_REQUEST });
apiAccountStatus(email, password)
.then(({ data }) => {
const status = data.status;
if (status === 'ACCOUNT_CREATED') {
apiSignIn(email, password)
.then(({ data: sessionData }) => {
apiIndexAccounts()
.then(({ data: accountsData }) => {
dispatch({ type: AUTHENTICATION_SUCCESS });
window.router.transitionTo('/dashboard/home');
});
});
} else if (status === 'SOMETHING ELSE') {
// TODO: HANDLE SOMETHING ELSE
}
})
.catch(({ response }) => {
dispatch({ type: AUTHENTICATION_FAILURE });
dispatch(notificationShow('ERROR', response.data.type));
});
};
Как вы можете видеть, эта функция довольно многословна, но каждый вложенный вызов API основан на данных, возвращаемых предыдущим, и я пытаюсь максимально очистить ее (биты диспетчеризации зависят от избыточности, но они, по сути, запускают все, что передается). В конце вы увидитеcatch
Скажите, мой вопрос, будет ли это заявление улова работать для всех обещаний или толькоapiAccountStatus
?