我使用RxJs 6.6.0和Angular 9。
我有两个函数返回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的返回。
答案 0 :(得分:4)
使用rxjs / operators中的switchMap
来实现。
this.sub = funcA()
.pipe(
switchMap(valueFromA => {
// use valueFromA in here.
return funcB()
})
)
.subscribe();
答案 1 :(得分:2)
尝试通过以下方式实现它:
import { mergeMap } from 'rxjs/operators';
funcA()
.pipe(
mergeMap(valueFromA => {
funcB({value: valueFromA }))
}
)
.subscribe(console.log);