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()
)