0

我有一项服务可以对休息 api 进行一些 http 调用。在我的组件上,我订阅了它。如何在不重新调用服务的情况下更新订阅中的数据?

4

1 回答 1

1

这个问题还不是很清楚,但我想我可以推断出足够的信息,希望能提供答案。

假设您有一个对象的可观察User对象,该对象具有OrganizationId属性,并且您想要与该Organization对象关联的对象的可观察对象OrganizationId。您希望它在用户更新时更新,对吗?

这就是您想要使用flatMap运算符的目的。假设我们organizationService有一个byId$方法,它接受并从该方法OrganizationId返回一个 observable 。http.post()

organization$ = user$
    .flatMap(user => organizationService.byId$(user.OrganizationId));

您可以认为flatMap与 类似map,它将采用一个值,并根据您传递给它的回调将其转换为另一个值。不同之处在于,如果你map以这种方式使用法线,你最终会得到一个可观察对象的可观察对象。flatMap将解开返回给它的可观察对象,因此您只有一个所需对象的可观察对象。

于 2017-06-09T20:33:34.967 回答