【问题标题】:angular 5 HttpClient observable reuseangular 5 HttpClient 可观察重用
【发布时间】:2018-01-24 18:05:02
【问题描述】:

我创建了一个服务,使用 HttpClient.get 从服务器返回用户详细信息。

public getUser(id: number): Observable<User>{

return this.http
  .get<User>('myUrl?id='+id);}

我已将服务注入到组件中。 在组件中我想获得一个用户,所以我订阅了返回 Observable 的服务方法。

到目前为止一切顺利。

我的问题: 现在我想获得另一个用户,问题是我如何激活服​​务方法以再次获得用户?

每次需要用户时,我是否应该取消订阅并重新订阅?

【问题讨论】:

  • httpClient 方法返回的 Observable 是冷的并且在响应之后完成。所以你不必取消订阅(导致 Observable 在响应之后完成)。是的,您必须再次调用 getUser() 并订阅返回的新 observable

标签: angular angular-httpclient angular-observable


【解决方案1】:

HttpClient 返回的所有 Observables 都是冷的

Observables 是将观察者与生产者联系起来的函数。如果在订阅期间创建并激活了底层生产者,则可观察对象是“冷的”。这意味着,如果 observables 是函数,则通过调用该函数来创建和激活生产者。 (source)

所以,可以多次订阅你的服务HttpClient 方法并从不同的地方调用它,你不需要取消订阅它。但请记住它是 neccesery to unsubscribe 组件销毁的所有订阅者。

【讨论】:

    猜你喜欢
    • 2018-08-25
    • 2018-12-29
    • 1970-01-01
    • 2018-07-25
    • 2018-10-25
    • 2018-12-02
    • 2019-01-11
    • 2019-10-27
    • 1970-01-01
    相关资源
    最近更新 更多