在我的网页中,我有两个控制器,每个控制器发出相同网址的 。第一个控制器从响应中获取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;
}
);
答案 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。