Angular 7, остановить поток вызовов по условию

Есть 3 сервиса которые необходимо вызывать последовательно: Observable1$, Observable2$, Observable3$

Я сделал вызов так:

Observable1$.pipe(
          switchMap(createResponse => Observable2$(createResponse.param)),
          switchMap(result => Observable3$()),
          takeUntil(this.unsubscribe)
        ).subscribe(result => result.status === 'ok' ? this.showSuccess() : this.showError())

Но потом понял что мне надо проверить результат вызова Observable1$ и если там fail, то следующие два вызова делать не надо.

Никак не могу найти как правильно построить цепочку вызовов или как остановить поток по условию.


Ответы (1 шт):

Автор решения: Lukas
Сделал по итогу вот так:

    Observable1$.pipe(
              switchMap(createResponse => createResponse.response === 'success' ? Observable2$(createResponse.param) : throwError('error')),
              switchMap(result => Observable3$()),
              takeUntil(this.unsubscribe)
            ).subscribe(
              result => result.status === 'ok' ? this.showSuccess() : this.showError()
              error => this.showError()
              )
→ Ссылка