Como posso estender a promessa de $ q no Angularjs com um .sucesso e .error
Eu escrevi este pequeno código em um serviço personalizado no AngularJS.
No meu serviço:
var deferred = $q.defer();
var promise = deferred.promise;
deferred.resolve('success');
deferred.reject('error');
/* Handle success and error */
promise.success = function(fn) {
promise.then(function(response) {
fn(response);
});
return promise;
};
promise.error = function(fn) {
promise.then(null, function(response) {
fn(response);
});
return promise;
};
No meu controlador:
promiseService.myPromise()
.success(function(data){
$scope.success= data;
})
.error(function(data){
$scope.error = data;
});
Eu justei o sucesso e o erro da promessa (serviço $ q). Eu preciso deste código em muitos outros serviços, então eu iria estender diretamente o serviço $ q com um personalizado.
Então, eu gostaria de algo assim no meu serviço:
var deferred = myPromiseService.$qCustom.defer();
var promise = deferred.promise;
deferred.resolve('success');
deferred.reject('error');
return promise;
Qualquer ideia? Eu encontrei alguma explicação para estender filtro em Angularjs meu problema é encontrar a boa maneira de estender toda a funcionalidade do $ q e adicionar meu costume.
Eu começo com algo assim, é trabalho para lidar com o $ q fora da caixa:
angular.module('myApp').service('myPromiseService', function($q){
$qCustom = $q;
});