所以在我努力掌握RXjs时,我遇到了以下情况;当应用程序重新水化(第一次引导)时,我会发送相应的REHYDRATE
动作。我有两个史诗听这个动作,但我希望第一个史诗只在第一个史诗结束时被调用。我目前的尝试如下:
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())
})
})
我在我的devtools中看到我得到了一个GET_ACCOUNT_INFO_FAILURE
所以Redux流程似乎在起作用。
答案 0 :(得分:2)
我有两个史诗听这个动作,但我希望第一个史诗只在第一个史诗结束时被调用。
听起来像第二部史诗不应该听REHYDRATE
而是听取第一部史诗在完成时发出的动作。这听起来怎么样?
答案 1 :(得分:0)
所以我自己弄清楚了。通过使用import React from 'react';
import ReactDOM from 'react-dom';
import {createStore, applyMiddleware} from 'redux';
import thunk from 'redux-thunk';
import {Provider} from 'react-redux';
import reducer from './reducers';
import Index from './components/index.jsx';
const store = createStore(reducer, applyMiddleware(thunk));
ReactDOM.render(
<Provider store={store}>
<Index />
</Provider>, document.getElementById("root")
)
,我可以等待两个流发出。在我的例子中,它看起来像这样;
zip()