Rxjs: условный буфер в любом случае работает как карта

Я хочу добиться некоторой условной буферизации. Если условный истинный буфер в любом случае работает как простая карта.

Я только мог решить это с 2 наблюдаемыми:

  @Effect()
  first$: Observable<Action> = this.actions
    .ofType(ACTION_TO_CATCH)
    .withLatestFrom(this.store.select(parameterOnPending))
    .filter(([action, pending]: [Action, boolean]) => !pending)
    .map(([action, pending]: [Action, boolean]) => new actionSuccess(action.payload))

  @Effect()
  second$: Observable<Action> = this.actions
    .ofType(ACTION_TO_CATCH)
    .withLatestFrom(this.store.select(parameterOnPending))
    .filter(([action, pending]: [Action, boolean]) => pending)
    .map(([action, pending]: [Action, boolean]) => action.payload)
    // this is the action which change back the parameterOnPending parameter
    .buffer(this.actions.ofType(ACTION_UNTIL_BUFFER_NEED))
    .flatMap((payloads: Array<any>) => payloads)
    .map((payload: any) => new actionSuccess(payload));

Есть ли более элегантный способ сделать это? Или я могу добиться того же только с одной наблюдаемой? Спасибо за помощь!

0 ответов

Другие вопросы по тегам