【发布时间】:2019-06-19 15:26:46
【问题描述】:
我想知道在 Redux Saga 中实现以下行为的正确方法是什么:
- 操作由用户交互分派。
- 适当的监听传奇现在尝试通过并行调用多个异步方法从 API 获取数据。
- 在每次成功响应时,独立于其余请求,将使用检索到的数据分派一个操作(从而更新 UI 等)。
- 收集错误响应,然后在所有请求完成后通过单个操作进行分派(例如,以便稍后显示单个错误 Toast)。
我已经通过使用以下模式成功实现了它(对不起,我缺少完整的代码示例,目前不可用):
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
}
这是达到预期效果的最佳方式吗?
【问题讨论】:
-
我觉得这很好 - 你有什么顾虑?
-
@WillJenkins 感觉有一个生成器函数有时会产生动作效果有时会返回错误是错误的。
-
@Jjang - 不错的配方,通常我为每个 API 结果使用单独的持有人
const [one, two, three],因此每个持有人都有其价值,要么是结果,要么是错误。喜欢redux-saga API
标签: javascript reactjs redux redux-saga