저는 저에게 국가 목록으로 돌아 가야하는 서비스가 있습니다. 하지만 여러 아약스 호출을 방지하기 위해 국가 값을 변수에 캐시하고 싶습니다. promise 객체를 만들었지 만 html은이 서비스를 여러 번 호출해야합니다. 내가 서비스를 호출 할 때 때로는 아약스가 캐시에서 반환 된 후 처음으로 반환합니다. 가끔은 캐시 이후 에이잭스에서 3 회 다시 실행됩니다. 어떻게 처리 할 수 있습니까?AngularJS는 약속을 여러 번 호출합니다.
var vm = this;
vm.countries;
vm.getCountries = function() {
var q = $q.defer();
if (vm.countries === undefined) {
return $http({
method: 'POST',
cache: true,
url: API + '/api/Global/Countries',
}).then(function successCallback(response) {
if (errorHandler(response.data)) {
vm.countries = response.data;
q.resolve(response.data)
console.log("ajax")
return q.promise;
}
});
} else {
console.log("cache")
q.resolve(vm.countries)
return q.promise;
}
}
보십시오. errorHandler가 false를 반환하면 오류를 처리하고 q.promise를 반환해야합니다. – Paqman
반환 값을 제거하면 "TypeError : 속성을 읽을 수 없습니다 ','undefined '오류가 발생합니다. – Sam