Я использую провайдера для получения некоторых данных через API в своем угловом приложении, а затем использую его в контроллере. Иногда API вызывает вызов, который приводит к ошибке 500. Эта ошибка печатается на консоли, и я не знаю, как ее обработать изящно.AngularJS - обработка ошибок с обещаниями
Вот мой код поставщика:
function myPvdr() {
this.getUrl = function() {
return 'http://path/to/my/API';
};
this.$get = function($q, $http) {
var self = this;
return {
getData: function(points) {
var d = $q.defer();
$http({
method: 'GET',
url: self.getUrl(),
cache: true
}).success(function(data) {
d.resolve(data);
}).error(function(err) {
d.reject(err);
});
return d.promise;
}
}
}
}
А вот как я использую его в мой контроллер:
function myCtrl($scope, myProvider, localStorageService) {
$scope.myData = localStorageService.get('data') || {};
myProvider.getData()
.then(function(data) {
localStorageService.set('data', data);
$scope.data = data;
});
}
Как я могу справиться с 500 ошибка должным образом, то есть не бросить любую ошибку консоли и использовать данные, предоставленные в локальном хранилище, если они есть?
Большое спасибо
Это эффективно агностически для Углового. Закрыто как дубликат вопроса обработки ошибок. Также, пожалуйста, подумайте о том, чтобы отложить отложенный шаблон и как его избежать. Весь ваш getdata также мог бы быть 'return $ http.get (...', поскольку $ http уже возвращает обещания. –