Могу ли я пропустить все последующие цепочки операторов, если условие верно в RxJS - PullRequest
3 голосов
/ 10 июля 2019

Возможно ли в RxJS 5.5 реализовать условие, используя некоторый оператор, чтобы пропустить все последующие операторы и выдать какое-то значение (false)?Например, в этом методе обслуживания ng я бы обошел кучу этой цепочки .map и немедленно предоставил бы значение false, если response.length === 0:

getProjectDrivers(projectId): Observable<any> {
  return this.http.get('someUrl').pipe(
    // if (response.length === 0) { return false; and skip whole operator chain bellow}
    map((response: ProjectDriver[]) => response.filter((projectDriver: ProjectDriver) => projectDriver.streamName !== "AllRevenueStreamTotals")),
    map((response: ProjectDriver[]) => command => ({})
  )
)
.catch(this.handleError);

}

1 Ответ

4 голосов
/ 10 июля 2019

Полагаю, вы всегда можете поиграть с switchMap

  return this.http.get('someUrl').pipe(
    switchMap(response => {
      if (!response.length) {
        return of(null);
      } else {
        return of(result).pipe(
          map((response: ProjectDriver[]) => response.filter((projectDriver: ProjectDriver) => projectDriver.streamName !== "AllRevenueStreamTotals")),
          map((response: ProjectDriver[]) => command => ({}))
        )
      }
    }
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...