Jja*_*ang 5 javascript reactjs redux redux-saga
我想知道在 Redux Saga 中实现以下行为的正确方法是什么:
我已经通过使用以下模式成功实现了它(抱歉,我缺少完整的代码示例,目前不可用):
function* fetchData(dataType) {
const resp = yield call(MyApi.fetchData, dataType);
if(!resp.err) {
yield put(fetchDataSuccess, resp.data);
} else {
return resp.err;
}
}
function* mySaga() {
const errors = yield all([
call(fetchData, 'typeOne'),
call(fetchData, 'typeTwo),
call(fetchData, 'typeThree)
]);
// errors contains the returned errors
}
Run Code Online (Sandbox Code Playgroud)
这是达到预期效果的最佳方式吗?
您可以使用forkeffect同时发送请求
https://redux-saga.js.org/docs/advanced/ForkModel.html
所以你的代码会变成这样
function* fetchData(dataType) {
const resp = yield call(MyApi.fetchData, dataType);
if(!resp.err) {
yield put(fetchDataSuccess, resp.data);
} else {
return resp.err;
}
}
function* mySaga() {
yield fork(fetchData, 'typeOne');
yield fork(fetchData, 'typeTwo');
yield fork(fetchData, 'typeThree');
}
Run Code Online (Sandbox Code Playgroud)
对于错误处理,您可以从生成器中抛出错误并在主传奇中处理它。
| 归档时间: |
|
| 查看次数: |
1304 次 |
| 最近记录: |