2017-05-12 100 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

相關問題