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 请求。
我是 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 请求。