HTTP 请求作为 Observable

HTTP request as Observables

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

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

我想创建一个函数,它 return 发送数据(如果可用),否则创建一个 http 请求获取数据和 return 该数据。

下面是我试过的代码:

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;
        }
    }

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

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

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