如何使用 Rxjs 解决 angular 2 中的以下用例
how to resolve the following use case in angular 2 using Rxjs
用例由三个服务调用组成,服务调用应序列化。
- 按 ID 获取组织。
- 使用 ID 调用 join 服务。
- 成功加入后调用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 => {
...
});
用例由三个服务调用组成,服务调用应序列化。
- 按 ID 获取组织。
- 使用 ID 调用 join 服务。
- 成功加入后调用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 => {
...
});