我正在尝试在http服务的角应用程序中实现缓存。
我在服务中的代码countriesService
public get(): Observable<any> {
return this.http.get(`/countries`, {})
.map(res => res.json())
.publishReplay(1)
.refCount();
}
在组件CountriesComponent,中
ngOnInit() {
this.countriesService.get()
.subscribe(res => {
this.countries = res.countries;
});
}
我要在路由配置中加载组件
const appRoutes: Routes = [
{ path: 'countries', component: CountriesComponent },
{ path: 'cities', component: CitiesComponent },
];
每次我从城市回到国家时,我都会看到=> /countries的请求。它不应该触发请求,因为它应该被缓存(这是它在角1.x中使用承诺的方式),但不应该使用角4和rxJ。
发布于 2017-06-21 10:53:12
您可以第一次保存服务中的国家,然后可以重新使用service变量。
public get(): Observable<any> {
if(this.countries != null)
{
return Observable.of(this.countries );
}
else
{
return this.http.get(`/countries`, {})
.map(res => res.json())
.do(countries => this.countries = countries )
.publishReplay(1)
.refCount();
}
}
https://stackoverflow.com/questions/44682115
复制相似问题