两个控制器同时运行时的Angular http缓存

时间:2015-05-05 16:22:27

标签: angularjs

在我的网页中,我有两个控制器,每个控制器发出相同网址的 。第一个控制器从响应中获取fieldA,第二个控制器从fieldB获取。

鉴于响应是缓存的,第二个方法是否会等到第一个方法完成并获得缓存,或者两个http请求都会因为它们同时发出而生成?

在控制器1中:

        var msg = {};
        var promise = $http.get('/someUrl', msg, { cache: true } );
        promise.then(
            function(response) {
                fieldA = response.fieldA;
            }
        );

在控制器2中:

        var msg = {};
        var promise = $http.get('/someUrl', msg, { cache: true } );
        promise.then(
            function(response) {
                fieldB = response.fieldB;
            }
        );

1 个答案:

答案 0 :(得分:0)

你可以提供一个缓解你的承诺的服务

.service('ResponseService', function () {
   var promise; // Closure which is cache
   return {
     getPromise: function () {
       promise = promise || $http.get('/someUrl', msg, { cache: true } );
       return promise;
     }
   }
});

在您的控制器中,注入ResponseService并执行var promise = ResponseService.getPromise()

请注意,这是一种简单的缓存机制。如果您打算进行更多缓存,请查看CachingFactory