私は私の国のリストに戻らなければならないサービスを持っています。しかし、私は国の値を変数にキャッシュして、複数のajax呼び出しを防ぐ必要があります。 私は約束オブジェクトを作成しましたが、私のHTMLはこのサービスを複数回呼び出す必要があります。私がサービスを呼び出すと、それはキャッシュから戻ってくる最初の時間からajaxから戻ってくることがあります。時にはそのキャッシュの3回後にajaxからretrunsすることもあります。これをどうすれば処理できますか?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;
}
}
https://docs.angularjs.org/api/ngResource/service/
リターンを取り除くと、 "TypeError:プロパティを読み取れません"、次に "未定義"というエラーがコンソールに表示されます。 – Sam