Дождитесь завершения нескольких действий в эпопее перед отправкой действия - PullRequest
0 голосов
/ 11 июня 2018

У меня есть компонент, в который я отправляю несколько действий:

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.of(success(response), hideLoading()), загрузочный счетчик исчезает.

Редуктор для загрузчика выглядит следующим образом:

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

Как мне дождаться завершения обоих действий перед вызовом hideLoading?Как мне разработать решение, которое ожидает x количество отправлений в компоненте?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...