如果第一个史诗调用,如何不调用第二个史诗?

How not to call the second epic if the first one called?

我有一个特别的epics

const extraEpics = combineEpics(someEpic1, someEpicN);

每个人都会检查他们的情况,他们都听同一个动作

action$.pipe(
    ofType(UPDATE_ACTION),
    pluck("payload"),
    filter(checkSomeExtraCase)

当没有一个史诗不会导致时,还有一个默认行为

const defaultBehaviorWithoutFilter = action$.pipe(
        ofType(UPDATE_ACTION),
        pluck("payload"),

我需要在过滤额外逻辑时调用它 我尝试 concat

export default (action$, state$) =>
  concat(
    extraEpics(action$, state$), 
    defaultBehavior(action$, state$)
  )

但是调用extra时,默认会调用到 如何在没有调用 extra 时才导致默认?

在这种情况下,我认为您可以看一下 rxjs-etc 并且有 concatIfEmpty 运算符,这正是您想要的。

export default (action$, state$) =>
  extraEpics(action$, state$)
    .pipe(
       concatIfEmpty(defaultBehavior(action$, state$))
     )