Angular 中的链 Observable RxJ
Chain Observable RxJs in Angular
我使用 RxJs 6.6.0 和 Angular9.
我有两个函数,returns Observable<'Class1'> 和 Observable<'number'>。
所以我习惯于:
funcA().subscribe(x=>{ // do something...});
funcB().subscribe(x=>{// do somethings..});
但是我只需要在 funcA() 完成时调用 funcB。我看到 concat 可能会有帮助,但我无法得到这样的两个答案
concat(funcA,funcB).subscribe( (x,y)=>{// do with x
//do with y});
我想这样做,因为 funcB 的参数取决于 funcA 的 return。
尝试按以下方式实现它:
import { mergeMap } from 'rxjs/operators';
funcA()
.pipe(
mergeMap(valueFromA => {
funcB({value: valueFromA }))
}
)
.subscribe(console.log);
使用rxjs/operators中的switchMap
实现。
this.sub = funcA()
.pipe(
switchMap(valueFromA => {
// use valueFromA in here.
return funcB()
})
)
.subscribe();
我使用 RxJs 6.6.0 和 Angular9.
我有两个函数,returns Observable<'Class1'> 和 Observable<'number'>。
所以我习惯于:
funcA().subscribe(x=>{ // do something...});
funcB().subscribe(x=>{// do somethings..});
但是我只需要在 funcA() 完成时调用 funcB。我看到 concat 可能会有帮助,但我无法得到这样的两个答案
concat(funcA,funcB).subscribe( (x,y)=>{// do with x
//do with y});
我想这样做,因为 funcB 的参数取决于 funcA 的 return。
尝试按以下方式实现它:
import { mergeMap } from 'rxjs/operators';
funcA()
.pipe(
mergeMap(valueFromA => {
funcB({value: valueFromA }))
}
)
.subscribe(console.log);
使用rxjs/operators中的switchMap
实现。
this.sub = funcA()
.pipe(
switchMap(valueFromA => {
// use valueFromA in here.
return funcB()
})
)
.subscribe();