我要进行一些更改后刷新它们的列表,它们是要击中的不同端点,并且它们需要同步(我想在获得第一个函数响应后调用第二个函数)。
从inviteUsers()
操作获得响应后,我想调用getAllUsers()
操作以获取更新的列表。
我的问题是,处理那些顺序调用的最佳实践是什么?我应该添加另一个saga
来监听INVITE_USERS_SUCCESS
,然后调用第二个动作,还是应该在getAllUsers()
动作中调用inviteUsers()
动作呢? >
// first action
function* inviteUsers(args) {
try {
yield call(() => API.post('/users/invite', args));
yield put({
type: CustomConstants.INVITE_USERS_SUCCESS
});
// call second action
yield call(getAllInvites);
} catch (e) {
yield put({
type: CustomConstants.INVITE_USERS_FAILURE,
error: e,
});
}
}
// second action (after first action response)
function* getAllInvites() {
try {
yield call(() => API.get('/users/all-invites'));
yield put({
type: CustomConstants.LIST_PENDING_INVITES_SUCCESS
});
} catch (e) {
yield put({
type: CustomConstants.LIST_PENDING_INVITES_FAILURE,
error: e,
});
}
}
答案 0 :(得分:1)
我应该添加另一个传奇来监听INVITE_USERS_SUCCESS,然后调用第二个动作
是的,你应该。当您仅使用动作来触发它们,并且更一般而言,使它们进行交流(这是事件驱动的开发)时,您将获得最好的Redux-saga体验。
这不仅使您可以编写更多代码,而且可以开发独立的sagas。
或者我应该在InvitationUsers()动作中调用getAllUsers()动作
我不建议您这样做,因为您的inviteUsers
传奇不会与getAllUsers
传奇分离(因为它们是更大流程的一部分),并且您将无法在需要其他流程时分别使用它们。
让我知道是否需要更多帮助