Rxjs условное switchMap, основанное на условии - PullRequest
0 голосов
/ 21 мая 2018

У меня такая ситуация:

myObservable1.pipe(
  switchMap((result1: MyObservable1) => {
    if (condition) {
      return myObservable2;
    } else {
      return of(null);
    }
  })
).subscribe(myObservable1 | myObservable2) => {

Так что, если условие ложно, мне нужно выполнить только один запрос, если условие истинно, я должен соединить первый запрос со следующимпо сути это два запроса к серверу api.

Есть ли лучшее решение, не возвращая этот нуль?Есть ли в RxJs условный оператор?

Спасибо!

Ответы [ 2 ]

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

Нет необходимости возвращать (ноль), вы должны использовать оператор фильтра RxJs

myObservable1.pipe(
  filter((result1) => condition)
  switchMap((result1: MyObservable1) => {
    return myObservable2;
  })
).subscribe((result2) => { ... })
0 голосов
/ 23 мая 2018

Я не знаю ваш реальный код, это псевдокод, и я не знаю, какую версию rxjs вы используете сейчас, но вы можете сделать что-то вроде ниже:

при условии, что вы используетеrxjs 6:

iif(condition, obervable1, concatMap(observable1, observable2))
.subscribe()
...