Я использую AngularJS и Restangular для доступа к API. У меня есть служба, которая упаковывает мои вызовы API. В своих сервисных функциях я хочу обрабатывать как собственные ошибки Restangular, так и ошибки логики приложения. Должен ли я обернуть обещание Restangular в отложенный слой $q?
Как моя ошибка, сгенерированная в (1), может быть обнаружена и отображена в (2)?
Мой сервис выглядит так:
app.service("project", function(Restangular) {
var projectObj = {
list : function() {
...
return 0;
},
generate : function() {
var list = projectObj.list();
if (list == 0) {
throw 'Empty list returned'; // (1)
}
else {
var promise = Restangular.one('project').get().then( function( returnedProject) {
console.log("returned", returnedProject);
}, function() {
console.log('there was an error');
};
return promise;
}
}
};
return projectObj;
}
Контроллер, использующий сервис:
var projectViewCtrl = function ($scope, project, notify) {
openGenerate = function() {
$scope.project.generate().then( function( result) {
console.log('OK');
}, function (error) {
notify(error); // (2)
});
}
}
projectViewCtrl.$inject = [ '$scope', 'project', 'notify'];
app.controller('projectViewCtrl', projectViewCtrl);