Одного takeWhile
должно быть достаточно, но вы можете pipe
его (как показано ниже), если вы используете последние версии (v5.5 и выше) RxJS.
this.dataService.awaitSomeObservable().pipe(
takeWhile(() => this.alive),
flatMap(result1 => {
//...
return this.dataService.awaitAnotherObservable();
})
).subscribe(x=>{})
Вы можете фактически поставить takeWhile
либо до, либо после flatMap
, но предоставить соответствующую функцию в качестве аргумента для takeWhile
в зависимости от вашего фактического варианта использования.