我是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;
}
}
答案 0 :(得分:1)
我想你想做这样的事情而不是share()
算子:
publishReplay()->refCount()->take(1)
这意味着每次订阅此Observable时,您都会收到缓存的值,take(1)
运算符将立即完成链,而无需订阅源并导致更多HTTP请求。