【问题标题】:HTTP request as ObservablesHTTP 请求作为 Observables
【发布时间】:2017-08-10 16:49:02
【问题描述】:

我是 Angular 2 和 Observable 的新手。 我有一个函数getCurrentUserDetails() 作为服务,它返回一个包含当前用户详细信息的可观察对象。我在每个路由访问中都使用它。

每次访问此功能时,我都想限制对数据库的 http 请求。

我想创建一个函数,如果可用则返回数据,否则创建一个 http 请求获取数据并返回该数据。

下面是我试过的代码:

private currentUser: any;
getCurrentUserDetails(){

        if(!this.currentUser){
            this.currentUser = this._http.get('getcurrentuserdetails').map((res:Response) => res.json()).share();
            return this.currentUser;
        }
        else {
            return this.currentUser;
        }
    }

【问题讨论】:

    标签: angular rxjs observable rxjs5 angular2-observables


    【解决方案1】:

    我猜你想做这样的事情而不是 share() 运算符:

    publishReplay()->refCount()->take(1)
    

    这意味着每次订阅此 Observable 时,您都会收到缓存的值,take(1) 运算符将使链立即完成,而不会订阅源并导致更多的 HTTP 请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-24
      • 2017-09-09
      • 2017-04-18
      • 2016-12-27
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多