Angular中的链可观察RxJ

时间:2020-08-13 13:18:31

标签: angular rxjs rxjs-observables

我使用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的返回。

2 个答案:

答案 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);