我有完整的应用程序,具体取决于从服务器请求加载的配置数据,如何在"之前创建阻塞"使用redux saga对每个动作采取行动,现在我的globalSaga看起来像这样。非常感谢帮助
function * rootSaga () {
yield takeLatest(LOAD_ONBOARDING.REQUEST,loadOnboardingSaga)
const res = yield put.resolve(loadOnboarding())
yield console.log(res)
yield all([
fork(globalSaga),
fork(spaceSaga),
fork(profileSaga),
fork(userSaga),
fork(pagesSaga)
])
}
答案 0 :(得分:1)
takeLatest
与自动取消每个后续分叉的分叉相同。请查看this以获取描述性示例。
所以在你的情况下,因为loadOnboardingSaga
应该连续阻止下一次调用,最便宜的解决方案就是将它全部置于loadOnboardinSaga
以下,因为有这样的直接继承:
function* initRestSaga() {
yield all([
fork(globalSaga),
fork(spaceSaga),
fork(profileSaga),
fork(userSaga),
fork(pagesSaga)
])
}
function* loadOnboardingSaga() {
//...
const res = yield put.resolve(loadOnboarding())
yield console.log(res)
yield call(initRestSaga)
}
function* rootSaga() {
yield takeLatest(LOAD_ONBOARDING.REQUEST, loadOnboardingSaga)
}

否则你必须手动分叉并取消takeLatest和last fork之间的每一个副作用。