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
的效果列表中产生每个效果,那么它仍然会阻止每个效果,直到前一个效果得到解决。