Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何将可观察值异步传递给多个可观察调用?_Angular_Typescript_Rxjs_Observable - Fatal编程技术网

Angular 如何将可观察值异步传递给多个可观察调用?

Angular 如何将可观察值异步传递给多个可观察调用?,angular,typescript,rxjs,observable,Angular,Typescript,Rxjs,Observable,我想获取一个从一个可观察对象发出的值,并使用该值作为参数来进行两个http调用,然后订阅这两个调用的连接结果,尽管它不必连接。在本例中,我尝试使用.zip运算符,但似乎无法使其工作。只进行了.getSymbolData调用。我是否应该使用另一个操作员 this.symbolSearchService.getSymbolData('cmcsa') .zip(stock => { console.log('stock', stock); <-- look

我想获取一个从一个可观察对象发出的值,并使用该值作为参数来进行两个http调用,然后订阅这两个调用的连接结果,尽管它不必连接。在本例中,我尝试使用.zip运算符,但似乎无法使其工作。只进行了.getSymbolData调用。我是否应该使用另一个操作员

   this.symbolSearchService.getSymbolData('cmcsa')
      .zip(stock => {
        console.log('stock', stock); <-- looks good
        this.symbolSearchService.getResearchReportData(stock);
        this.symbolSearchService.getPGRDataAndContextSummary(stock);
      })
      .subscribe(
        res => {
          console.log('res', res); <-- undefined
        },
        err => this.sharedService.handleError
      );
编辑:
我忘了提到我想保留初始观测值。所以我想做这个。stock=stock某处。

你要找的是switchMap和combineLatest操作符。它允许您返回一个新的可观察对象

    this.symbolSearchService.getSymbolData('cmcsa')
      .switchMap(stock => {
        this.stock = stock;
        return Observable.combineLatest(
          this.symbolSearchService.getResearchReportData(stock),
          this.symbolSearchService.getPGRDataAndContextSummary(stock)
        })
      .subscribe(
        values => {
          console.log('values', values);
        },
        err => this.sharedService.handleError
      );

这是可行的,但我也想保留股票价值,所以我想要这个。股票=股票@第33周