如何使用 Rxjs 解决 angular 2 中的以下用例

how to resolve the following use case in angular 2 using Rxjs

用例由三个服务调用组成,服务调用应序列化。

  1. 按 ID 获取组织。
  2. 使用 ID 调用 join 服务。
  3. 成功加入后调用markRead通知服务。

我尝试的是以下内容。

  getOrgById(22)
 .flatMap((org)=>org.join())
 .flatMap(()=>notification.markRead(1))
  .subscribe(()=>{
  })

所以最主要的问题是,如何在订阅中获取组织信息。

对于值的可观察对象,您可以使用 .do,它采用前一个可观察对象的结果,可以用它做一些事情,returns 一个相同结果的可观察对象:

getOrgById
    .do(org => console.log(org))
    .subscribe(org => {
      ...
    });

不过,据我所知,对于可观察对象的可观察对象,没有 flat 等同于 do 的对象。您可以通过自己从每个步骤返回它来获得相同的行为:

getOrgById(22)
    .flatMap(org => org.join().map(() => org))
                           // ^ like this
    .flatMap(org => notification.markRead(1).map(() => org))
    .subscribe(org => {
      ...
    });