Я вызываю getWeeklyDates, который вызывает cachingGlobalConfigurationService, который снова вызывает глобальную конфигурацию, если данные глобальной конфигурации не могут быть найдены в localstorage.сервис возвращает обещание, но cachingService не
Код =>
return cachingGlobalConfigurationService.getGlobalConfiguration()
.then(function(response1){
прекрасно работает, когда globalConfiguration еще не кэшируются, потому что тогда я делаю вызов Ajax и вернуть обещание.
Но выше строка кода с .then (функция (response1) не определено, когда мой globalConfiguration можно найти в LocalStorage и только это возвращается:
else {
return cachedGlobalConfiguration;
}
Я предполагаю, что я не могу использовать .then в этом случае, но я хотел бы.
Как я могу это исправить?
this.getWeeklyDates= function (projectId, currentDate) {
return cachingGlobalConfigurationService.getGlobalConfiguration()
.then(function(response1){
// do business logic
});
'use strict';
angular.module('test').service('cachingGlobalConfigurationService', function (localStorageService, globalConfigurationService) {
this.getGlobalConfiguration = function() {
var cachedGlobalConfiguration = localStorageService.get('globalConfiguration');
if (!cachedGlobalConfiguration) {
return globalConfigurationService.getGlobalConfiguration().then(
function (globalConfiguration) {
localStorageService.set('globalConfiguration', globalConfiguration);
return globalConfiguration;
},
function (error) {
console.log('error', error);
});
}
else {
return cachedGlobalConfiguration;
}
};
this.saveGlobalConfiguration = function (globalConfiguration) {
// TODO: Only save to local storage when service.save was successfully
localStorageService.set('globalConfiguration', globalConfiguration);
globalConfigurationService.saveGlobalConfiguration(globalConfiguration);
}
});
'use strict';
angular.module('test').service('globalConfigurationService', function ($http) {
this.getGlobalConfiguration = function() {
// TODO get from db
var path = 'scripts/model/globalConfiguration.json';
return $http.get(path).then(function (response) {
return response.data.globalConfiguration;
});
};
this.saveGlobalConfiguration = function (globalConfiguration) {
// TODO: save on db
//var path = 'scripts/model/globalConfiguration.json';
//return $http.post(path, globalConfiguration).then(function (response) {
// alert('global configuration was saved succesfully!');
//});
}
});
Спасибо, хорошо выглядит и работает :-) – Elisabeth