在 redux 中排序 epics

sequencing epics in redux

我有两个 epics,epicA 和 epicB。

B 受制于 back-pressure,因为与其关联的 api 调用较慢。 (上传)

但是,我需要确保来自 B 的所有 api 请求在 A 之前完成。

所以如果请求是

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

如果 B2 触发时 B1 尚未完成,则解决方案应为

B1, B2, B3, A1

如果 B1 在 B2 被触发之前完成,分辨率应该是

B1, A1, B2, B3

我一开始以为

const bigEpic = epicA.concat(epicB)

会是一个答案,但我认为这没有意义

另一个想法:

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

您可以使用 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),
   )