在redux saga中,可以通过使用try-catch
块来获取响应而不是错误。当我们发起一个异步请求时,可以使用call
效果来调用一个返回Promise的函数。在try
块中,我们可以使用yield call(apiFunction, args)
来调用该函数,并等待其返回一个Promise。如果Promise被解析(resolved),则表示请求成功,我们可以通过yield put(actionCreator(responseData))
将响应数据发送给Redux store。如果Promise被拒绝(rejected),则表示请求失败,我们可以通过yield put(errorActionCreator(errorData))
将错误数据发送给Redux store。
以下是一个示例代码:
import { call, put } from 'redux-saga/effects';
import { fetchUserSuccess, fetchUserError } from './actions';
import { getUser } from './api';
function* fetchUserSaga(action) {
try {
const response = yield call(getUser, action.payload);
yield put(fetchUserSuccess(response.data));
} catch (error) {
yield put(fetchUserError(error.message));
}
}
在上面的示例中,getUser
是一个返回Promise的异步函数,它接收一个参数action.payload
。通过使用call(getUser, action.payload)
,我们调用了getUser
函数并等待其返回一个Promise。如果Promise被解析,我们将响应数据通过fetchUserSuccess
action creator发送给Redux store。如果Promise被拒绝,我们将错误信息通过fetchUserError
action creator发送给Redux store。
这种方式可以让我们在redux saga中获取响应数据,并根据响应结果执行相应的操作,而不是直接抛出错误。这样可以更好地控制异步流程,并处理请求成功和失败的情况。
腾讯云相关产品和产品介绍链接地址:
请注意,以上链接仅供参考,具体产品选择应根据实际需求和情况进行评估。
领取专属 10元无门槛券
手把手带您无忧上云