mom*_*omo 9 javascript redux-saga
Redux saga noob在这里.
我需要创建一个saga,从我的API服务器加载redux存储的初始状态.
这涉及使用两个异步传奇:getCurrentUser和getGroups.
我需要并行发出这些ajax请求,并在发出动作之前等待GET_CURRENT_USER_SUCCESS和动作,告诉UI是时候渲染反应组件.GET_GROUPS_SUCCESSpageReady
我提出了一个hacky解决方案:
function * loadInitialState () {
yield fork(getCurrentUser)
yield fork(getGroups)
while (true) {
yield take([
actions.GET_GROUPS_SUCCESS,
actions.GET_CURRENT_USER_SUCCESS
])
yield take([
actions.GET_GROUPS_SUCCESS,
actions.GET_CURRENT_USER_SUCCESS
])
yield put(actions.pageReady())
}
}
Run Code Online (Sandbox Code Playgroud)
此代码的问题在于,如果由于某种原因GET_GROUPS_SUCCESS发出两次,pageReady则会提前调用该操作.
我怎样才能让redux saga等待GET_GROUPS_SUCCESS并GET_CURRENT_USER_SUCCESS以任何顺序至少发生一次?
eri*_*old 15
我想你想要的all效果
function * loadInitialState () {
// start loading state...
yield all([
take(actions.GET_GROUPS_SUCCESS)
take(actions.GET_CURRENT_USER_SUCCESS)
]);
yield put(actions.pageReady())
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4500 次 |
| 最近记录: |