【发布时间】:2017-04-03 07:46:38
【问题描述】:
我有一个很长的登录过程,它依赖于目前看起来像这样的 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 调用都依赖于从先前返回的数据,我正在尝试尽可能地清理它(调度位是特定于 redux 的,但这些基本上会触发传递的任何内容在)。最后你会看到一个catch 声明,我的问题是这个catch 声明是否适用于所有的promises 或只适用于apiAccountStatus?
【问题讨论】:
标签: javascript api reactjs promise redux