簡體   English   中英

使用 RXJS 一起返回兩個 observables 的結果

[英]use RXJS to return results of two observables together

我想從 URL 中讀取參數,然后使用該值調用 observable。 如果找到了結果,我想繼續它並調用另一個可觀察對象。 理想情況下,兩個調用都被包裝了,我只需要訂閱一次,然后我就可以將兩個結果重新組合在一起。

到目前為止,這是我的實現:

this.route.paramMap.pipe(
  switchMap(params => {
    return forkJoin(
      this.treeService.getTree(params.get('treeName')),
      this.treeService.getTree(params.get('treeName')).pipe(
        mergeMap(tree => this.fruitService.getFruit(tree.id))
      )
    )
  })
).subscribe(res => console.log(res));

這工作得很好,但我必須進行 2 次相同的調用……我該如何改進它,以便它只對 treeService 進行一次調用?

您可以使用這樣的內部map

this.route.paramMap.pipe(
  switchMap(params => {
    return this.treeService.getTree(params.get('treeName')).pipe(
      switchMap(tree => this.fruitService.getFruit(tree.id).pipe(
        map(fruit => ([tree, fruit]))
      ))
    )
  })
).subscribe(res => console.log(res));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM