如何更新我的订阅数据?
How can I update my subscribe data?
我有一项服务可以对 rest api 进行一些 http 调用。在我的组件上,我订阅了它。如何在不重新调用服务的情况下更新订阅数据?
问题不是很清楚,但我想我可以推断出足够的希望提供答案。
假设您有一个 User
对象的可观察对象,上面有一个 OrganizationId
属性,并且您想要一个 Organization
对象的可观察对象OrganizationId
。您希望它在用户更新时更新,对吗?
这就是您要使用 flatMap
运算符的目的。假设我们的 organizationService
有一个 byId$
方法接受 OrganizationId
和 returns 一个来自 http.post()
方法的可观察值。
organization$ = user$
.flatMap(user => organizationService.byId$(user.OrganizationId));
您可以认为 flatMap
与 map
相似,因为它采用一个值,并根据您传递给它的回调将其转换为另一个值。不同之处在于,如果您以这种方式使用正常的 map
,您最终会得到一个可观察的可观察对象。 flatMap
将解开返回给它的可观察对象,这样您就可以获得所需对象的可观察对象。
我有一项服务可以对 rest api 进行一些 http 调用。在我的组件上,我订阅了它。如何在不重新调用服务的情况下更新订阅数据?
问题不是很清楚,但我想我可以推断出足够的希望提供答案。
假设您有一个 User
对象的可观察对象,上面有一个 OrganizationId
属性,并且您想要一个 Organization
对象的可观察对象OrganizationId
。您希望它在用户更新时更新,对吗?
这就是您要使用 flatMap
运算符的目的。假设我们的 organizationService
有一个 byId$
方法接受 OrganizationId
和 returns 一个来自 http.post()
方法的可观察值。
organization$ = user$
.flatMap(user => organizationService.byId$(user.OrganizationId));
您可以认为 flatMap
与 map
相似,因为它采用一个值,并根据您传递给它的回调将其转换为另一个值。不同之处在于,如果您以这种方式使用正常的 map
,您最终会得到一个可观察的可观察对象。 flatMap
将解开返回给它的可观察对象,这样您就可以获得所需对象的可观察对象。