секвенирование эпиков в редуксе

У меня есть два эпика, epicA и epicB.

B подвержен обратному давлению, поскольку связанные с ним вызовы API выполняются медленнее. (загрузки)

Однако мне нужно убедиться, что все запросы API, поступающие от B, выполняются до того, как A.

так что если запросы

B1....A1....B2...B3...

Если B1 не завершился к моменту срабатывания B2, разрешение должно быть

B1, B2, B3, A1

Если B1 завершается до того, как сработает B2, разрешение должно быть

B1, A1, B2, B3

Я сначала подумал, что

const bigEpic = epicA.concat(epicB)

был бы ответ, но я не думаю, что это имеет смысл

Другая идея:

const bigEpic = action$ => epicA(action$).concat(epicB(action$))

person Anthony Chung    schedule 16.08.2017    source источник
comment
Если вы переформулируете свой вопрос так, чтобы он был просто rxjs без жаргона, наблюдаемого при сокращении, вы должны получить гораздо больше ответов :) почти все вопросы, наблюдаемые при сокращении, на самом деле просто rxjs   -  person jayphelps    schedule 17.08.2017
comment
Сводится ли это к вопросу rxjs? Поскольку я объявляю некую иерархию процессов, я не нашел паттернов, разрешающих таким образом два эпика.   -  person Anthony Chung    schedule 17.08.2017


Ответы (1)


Вы можете использовать Observable.merge для последовательности действий.

const fetchFirst = () =>
  (action, store) => Observable.ajax('/first');

const fetchSecond = () =>
  (action, store) => Observable.ajax('/second');

const fetchBoth = () =>
  (action, store) =>
    Observable.merge(
      fetchFirst()(action, store),
      fetchSecond()(action, store),
   )
person Logicgate    schedule 12.01.2018