HTTP请求为Observables

时间:2017-03-19 11:39:13

标签: angular rxjs observable rxjs5 angular2-observables

我是angular 2和Observable的新手。 我有一个函数getCurrentUserDetails()作为服务,它返回一个带有当前用户详细信息的observable。我在每次路径访问时使用它。

我想在每次访问此功能时将我的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;
        }
    }

1 个答案:

答案 0 :(得分:1)

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

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

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