我有一个缓存完整http响应的服务。但是,每次调用该服务时,服务都会向服务器发出新的调用以检查新数据。如果我加载页面并从服务中记录数据(getGlobals函数),它首先记录缓存的数据,然后记录服务中的新数据。然而,页面只加载第一个缓存的数据,并且在http调用就绪后不会使用来自服务器的新数据进行刷新。
我猜它与.then
有关,但承诺上不允许.subscribe
。我如何通过getGlobals等服务从页面中的服务器获取新的响应数据?
服务
getGlobals() {
return new Promise(resolve => {
let url = `${URL.getGlobals}`;
let request = this.authHttp.get(url).map(res => res.json());
let groupKey = 'slider';
let ttl = 60;
let delayType = 'all';
let response = this.cache.loadFromDelayedObservable(url, request, groupKey, ttl , delayType);
response.subscribe(
data => {
this.data = data;
console.log(this.data); // show cache and new loaded data
resolve(this.data);
},
err => {
resolve(false);
}
);
});
}
页
getGlobals(){
this.GetApi.getGlobals().then(
data => {
console.log(data); // only shows the cached data
this.createGlobals( data );
},
err => console.log(err)
);
}