如何使用角度和本地存储缓存来自休息服务的响应,并实现快速的UI响应

时间:2014-02-12 13:51:00

标签: javascript angularjs rest caching

我有一个应用程序,它请求REST服务中的可能项目列表。我使用$ http或$ resource。

现在我想在localStorage中缓存这些项目,并且只是偶尔将我的本地存储与后端同步,以检查是否有任何更改。

所以在我这样做之前:

var getAllPlugs = function () {


        var backend = $resource(getURLString() + '/getAllPlugsAvailable');
        return backend.query();
    };

但现在我希望函数立即返回我的缓存项目,一旦异步http请求完成,它应该更新项目列表,如果有什么变化。这当然应该直接反映在UI

如果我做这样的事情就会出现问题:

var getAllPlugs = function(){

        var backend = $resource(getURLString() + '/getAllPlugsAvailable');
        var result =  backend.query();
        localStorage.setItem("plugs", JSON.stringify(result));
        return result
    };

我仍然只得到http请求的结果。但是如何实现它,所以我首先得到缓存的,然后该对象将更新更新。也许从我的控制器成功回调传递给调用后端的服务?我需要一些启发,抱歉,如果它是微不足道的......

1 个答案:

答案 0 :(得分:0)

从本地存储返回数组。一旦数据来自http,就会替换数组的内容。

var getAllPlugs = function () {
        var results = JSON.parse(localStorage["plugs"]);
        var backend = $resource(getURLString() + '/getAllPlugsAvailable');
        backend.query({}, function(data) {
            results.length=0;  //clear existing
            angular.forEach(data, function(plug) {
                  results.push(plug);
            }
            localStorage.setItem("plugs", JSON.stringify(results));

        });
        return result
    };