Redux 结合多个传奇故事
对于合并我使用的多个传奇Redux 结合多个传奇故事,redux,redux-saga,Redux,Redux Saga,对于合并我使用的多个传奇 function* mySaga() { yield takeEvery("USER_FETCH_REQUESTED", fetchUser); yield takeEvery('INCREMENT_ASYNC', incrementAsync); } 但我看到了其他设计模式: function* mySaga() { yield all([ yield takeEvery("USER_FETCH_REQUESTED", fe
function* mySaga() {
yield takeEvery("USER_FETCH_REQUESTED", fetchUser);
yield takeEvery('INCREMENT_ASYNC', incrementAsync);
}
但我看到了其他设计模式:
function* mySaga() {
yield all([
yield takeEvery("USER_FETCH_REQUESTED", fetchUser),
yield takeEvery('INCREMENT_ASYNC', incrementAsync)
]);
}
两者之间有什么区别?我们在哪里可以使用所有 所有效果允许您并行执行效果。例如,假设您需要拨打2个网络电话,等待结果后再继续:
const result1 = yield call(fetch, '/foo')
const result2 = yield call(fetch, '/bar')
在这种情况下,result2在result1解析之前不会执行
const [ result1, result2 ] = yield all([
call(fetch, '/foo'),
call(fetch, '/bar'),
])
在这种情况下,两个
fetch
请求都会紧接着发出,而无需等待任何一个请求的解决。一旦两者都解决了,redux saga将使用这两个承诺的结果继续生成器功能。注意:使用此效果时,您仅产生所有([…])
的结果。如果您要在传递给all
的效果列表中产生每个效果,那么它仍然会阻止每个效果,直到前一个效果得到解决。