由于使用createAsyncThunk
创建的thunk将始终返回已解析的promise。有没有比每次都必须添加unwrapResult
以捕获拒绝更好的方法来处理链式thunk?
const fetchUsers = createAsyncThunk('users/fetch', myService.fetchUsers);
const updateUser = createAsyncThunk('users/update', myService.updateUser);
export const updateAndFetch = values => async dispatch => {
const result = await dispatch(updateUser(values));
const unwrapped = unwrapResult(result); // required to see if first update was rejected
return dispatch(fetchUsers());
}
不是。
你也可以像一样写
export const updateAndFetch = values => async dispatch => {
const result = await dispatch(updateUser(values)).then(unwrapResult);
return dispatch(fetchUsers());
}
或
export const updateAndFetch = values => async dispatch => {
const result = await dispatch(updateUser(values));
if (updateUser.fulfilled.match(result)) {
return dispatch(fetchUsers());
}
}
但在某个时刻,你将不得不进行检查。