【问题标题】:How to pass Observable value to multiple Observable calls asynchronously?如何将 Observable 值异步传递给多个 Observable 调用?
【发布时间】:2017-05-12 17:39:06
【问题描述】:

我想获取从一个 observable 发出的值并将该值用作参数来进行两次 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
      );

编辑: 我忘了提到我想保留初始 observable 的值。所以我想在某处做这个。stock = stock。

【问题讨论】:

    标签: angular typescript rxjs observable


    【解决方案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
          );
    

    【讨论】:

    • 这行得通,但我也想保留股票价值,所以在某个地方我想要 this.stock = stock。 @Eeks33
    猜你喜欢
    • 2021-06-04
    • 2019-01-07
    • 2019-04-05
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 2014-11-04
    相关资源
    最近更新 更多