返回可观察链的所有结果

时间:2019-03-28 09:59:56

标签: javascript rxjs

在我的Angular应用程序中,我试图实现以下目标

  1. 执行Observable A
  2. A完成后,使用A的结果执行Observable B
  3. B完成后,返回 A 和B
  4. 的结果

如果没有第三点,我想这很简单,我会做这样的事情:

this.myService.getData()
  .pipe(
    flatMap(firstResult => this.myService.getMoreData(firstResult.someField))
  ).subscribe(secondResult => {
      // process the data
  });

问题是这样,我最终只能访问secondResult,但我也需要firstResult

我不是RxJS可观对象的专家,所以我真的很乐意提供有关如何解决此问题的建议。

1 个答案:

答案 0 :(得分:3)

您可以将第二个结果映射到两个结果的数组。

this.myService.getData()
  .pipe(
    concatMap(firstResult => this.myService.getMoreData(firstResult.someField).pipe(
      map(secondResult => [firstResult, secondResult]),
    ))
  ).subscribe(([first, second]) => ...);