Как игнорировать события в Observable, если условие не совпадает? - PullRequest
0 голосов
/ 14 мая 2019

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

Если я просто возвращаю ignoreElements, это вызывает ошибку, чтовозвращаемое значение не передается.

export const getDataEpic: (action$, state$,
    { apolloClient, services }: { apolloClient: ApolloClient<any>, services: any }) => any
    = (action$, state$, { apolloClient, services }) =>
        action$.pipe(ofType('TEST)).pipe(map(x => x))
            .pipe(
                switchMap((action) =>
                    of([true, false, true]))
                        .pipe(
                            map(settings => ({ action, config: settings})), // true or false
                            switchMap(value=> {
                                if(value.config)
                                  return of([1])
                                } else {
                                   // if condition not met then don't emit anything
                                    return ignoreElements();
                                }
                            }),
                        ),

                ),
                groupBy(value => value.action.payload.model.resource),
                mergeMap(ngroup => ngroup

1 Ответ

0 голосов
/ 27 мая 2019

Ошибка в том, что вы возвращаете операторную функцию вместо наблюдаемой.Вы должны вернуть EMPTY, если вам нужна наблюдаемая, которая не излучает никаких предметов.

import { EMPTY } from 'rxjs'

...
switchMap(value => {
  if (value.config)
    return of([1])
  } else {
    // if condition not met then don't emit anything
    return EMPTY
  }
})
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...