Angularjs promesse rejet de chaînage

J'ai besoin de créer enchaîné promesses:

var deferred = $q.defer();
$timeout(function() {
    deferred.reject({result: 'errror'});
}, 3000);
deferred.promise.then(angular.noop, function errorHandler(result) {
    //some actions
    return result;
}).then(function successCallback(result) {
    console.log('what do I do here?');
    return result;
}, function errorCallback(result) {
   $scope.result= result;
   return result;
});

Si je mets un errorCallback dans la première then, la deuxième then sera résolu et ses successCallback sera appelée . Mais si je supprime errorHandler puis la deuxième promesse sera rejetée.

Selon Angular JS docs la seule façon de propager le rejet est de retour $q.reject(); et il ne semble pas évident, surtout parce que j'ai injecter $q service, même s'il n'est pas nécessaire;

Il peut également être fait par la levée d'une exception dans errorHandler, mais il écrit exception de trace sur la console, il n'est pas bon.

Est-il une autre option pour cela dans une manière claire? Et quelle est la raison? Pourquoi il est fait? Dans ce cas, le comportement de l'actuelle peut-elle être utile?

InformationsquelleAutor just-boris | 2013-09-12