Reactjs 如何等待另一个史诗谁听相同的动作流
因此,在我努力掌握RXjs的过程中,我遇到了以下情况:;当应用程序重新水化(第一次引导)时,我会发送一个相应的Reactjs 如何等待另一个史诗谁听相同的动作流,reactjs,redux,rxjs,redux-observable,Reactjs,Redux,Rxjs,Redux Observable,因此,在我努力掌握RXjs的过程中,我遇到了以下情况:;当应用程序重新水化(第一次引导)时,我会发送一个相应的重新水化操作。我有两部史诗在听这个动作,但我希望第二部史诗只能在第一部史诗结束时调用。我目前的尝试如下所示: export const rehydrateEpic = ( action$: ActionsObservable ) => action$.ofType(REHYDRATE) .switchMap(() => { // Wait for
重新水化
操作。我有两部史诗在听这个动作,但我希望第二部史诗只能在第一部史诗结束时调用。我目前的尝试如下所示:
export const rehydrateEpic = (
action$: ActionsObservable
) =>
action$.ofType(REHYDRATE)
.switchMap(() => {
// Wait for the JWT token to be successfully fetched.
return action$.ofType(GET_JWT_SUCCESS)
// When this line is removed, you will disappear in a spacetime continuum.
.take(1)
.do(action => {
// I get the action here...
console.log(action)
})
.switchMap(action => {
return action$.ofType([
actions.GET_ACCOUNT_INFO_SUCCESS,
actions.GET_ACCOUNT_INFO_FAILURE,
])
.do(action => {
// ...but this one is never reached :(
console.log(action)
})
.startWith(actions.getAccountInfo())
})
})
我在我的开发工具中看到,我得到了一个get\u ACCOUNT\u INFO\u失败
,因此不知何故,Redux流似乎起了作用
我有两部史诗在听这个动作,但我希望第二部史诗只能在第一部史诗结束时调用
听起来第二部史诗不应该听再水化
,而应该听第一部史诗完成时发出的动作。听起来怎么样
我有两部史诗在听这个动作,但我希望第二部史诗只能在第一部史诗结束时调用
听起来第二部史诗不应该听
再水化
,而应该听第一部史诗完成时发出的动作。听起来怎么样?所以我自己想出来了。通过使用zip()
,我可以等待两个流都发出。在我的例子中,它看起来是这样的
export const rehydrateEpic = (
action$: ActionsObservable
) =>
action$.ofType(REHYDRATE)
// Wait for the JWT token to be successfully fetched.
.zip(() => action$.ofType(GET_JWT_SUCCESS))
.switchMap(() => {
return action$.ofType([
actions.GET_ACCOUNT_INFO_SUCCESS,
actions.GET_ACCOUNT_INFO_FAILURE,
])
.do(action => {
// ...but this one is never reached :(
console.log(action)
})
.startWith(actions.getAccountInfo())
})
所以我自己想出来了。通过使用
zip()
,我可以等待两个流都发出。在我的例子中,它看起来是这样的
export const rehydrateEpic = (
action$: ActionsObservable
) =>
action$.ofType(REHYDRATE)
// Wait for the JWT token to be successfully fetched.
.zip(() => action$.ofType(GET_JWT_SUCCESS))
.switchMap(() => {
return action$.ofType([
actions.GET_ACCOUNT_INFO_SUCCESS,
actions.GET_ACCOUNT_INFO_FAILURE,
])
.do(action => {
// ...but this one is never reached :(
console.log(action)
})
.startWith(actions.getAccountInfo())
})
这可能确实是一个解决方案,但我想对这两个操作做出回应,因为
GET\u JWT\u SUCCESS
可以在应用程序的其他状态下进行调度。也许可以说我能够分派操作。getAccountInfo()
,那么GET\u ACCOUNT\u INFO\u SUCCESS
也会显示在Redux记录器中。但是从未调用do()
。这确实是一个解决方案,但我想对这两个操作作出响应,因为GET\u JWT\u SUCCESS
可以在应用程序的其他状态下调度。也许可以说我能够分派操作。getAccountInfo()
,那么GET\u ACCOUNT\u INFO\u SUCCESS
也会显示在Redux记录器中。但是从未调用do()
。