Чтобы сохранить мой код в чистоте, я стараюсь не использовать вложенные каналы, когда дело доходит до наблюдаемых. Однако я столкнулся с созвездием (см. Код ниже), где я не мог найти способ обойтись без. Интересно, есть ли способ решить эту проблему только с одним каналом?
Пример кода:
class CannotSimplify {
observableA(): Observable<number> {
return of(1);
}
bDependentA(a: number): Observable<number> {
return of(2 + a, 3 + a);
}
cDependentOnAAndB(a: number, b: number): Observable<number> {
return of(a + b);
}
printResult(): void {
this.observableA()
.pipe(
switchMap(a => this.bDependentA(a)),
switchMap(b => this.cDependentOnAAndB(a, b)) // <-- error: a is undefined
)
.subscribe(c => console.log(c));
}
}
Единственное решение, которое я могу придумать, это снова передать this.bDependentOnA()
. Есть ли лучший подход?
Заранее спасибо!