2017-05-12 60 views
0

我想从一个observable中获取一个值并将该值用作参数来创建两个http调用,然后订阅这两个调用的连接结果,尽管它不会将连接起来。我试图在这种情况下使用.zip运算符,但我似乎无法得到它的工作。只有.getSymbolData调用正在进行。我应该使用另一个运营商吗?如何将Observable值异步传递给多个Observable调用?

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 =股票某处。

回答

1

你在找什么是switchMap和combineLatest操作符。它允许你返回一个新的observable。

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 
    ); 
+0

这个工程,但我也想保留股票价值,所以在某个地方,我想this.stock =股票。 @ Eeks33 – Yeysides

+0

@Yeysides - 没问题,编辑我的回答 – Eeks33

+0

太棒了,谢谢! – Yeysides

相关问题