如何从可观察到的刷新数据

时间:2018-06-12 17:54:41

标签: angular caching promise ionic3 observable

我有一个缓存完整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)
    );
}

0 个答案:

没有答案