在调度操作之前等待多个操作在epic中完成

时间:2018-06-11 03:36:50

标签: rxjs redux-observable

我有一个组件可以发送多个动作:

dispatch(action1());
dispatch(action2());

我有一个史诗,它会侦听这两个动作,并为每个动作调用ajax:

export const fetchObservable = action$ =>
  action$.ofType(...actions) // wait for either action
    .mergeMap(({ url, method, body, success, error, responseType }) =>
      authenticate$
        .mergeMap(token => ajax$(url, method, body, token, responseType))
        .pluck('response')
        .mergeMap(response => Observable.of(success(response), hideLoading()))
        .startWith(showLoading())
        .catch(response => Observable.of(error(response)))
    );

我展示了一个带有showLoading()的加载微调器,并将其隐藏hideLoading()

问题是,只要第一个observable完成并调用Observable.of(success(response), hideLoading()),加载微调器就会消失。

加载程序的reducer如下所示:

const loader = (state = false, action) => {
  switch (action.type) {
    case SHOW_LOADING:
      return true;
    case HIDE_LOADING:
      return false;
    default:
      return state;
  }
}

如何在调用hideLoading之前等待两个操作完成?我如何开发一个等待组件中x次调度的解决方案?

0 个答案:

没有答案