У меня есть служба, которая кэширует полные 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)
);
}