q$.rejeter et de la manipulation des erreurs dans AngularJS enchaîné promesses

Je vais avoir de la difficulté à comprendre un concept de base de la gestion d'erreur avec le chaînage de promesses.
Afin d'en apprendre les règles, j'ai écrit un exemple simple, de deviner quel sera le résultat. Mais malheureusement il ne se comporte pas comme je pensais qu'il sera.
J'ai lu plusieurs articles sur le sujet, mais peut-être ne puis-je pas obtenir plus de détails à cause de ma mauvaise langue anglaise.

De toute façon, voici mon code :

    var promiseStart = $q.when("start");
    var promise1 = promiseStart.then(function() {
            return Serviceforpromise1.get();
    });
    var promise2 = promise1.then(function(data1)
    {
            return Serviceforpromise2.get(data1);
    },function(error)
    {
            return $q.reject();
    });
    var promiseend = promise2.then(function(data2)
    {
            return data2;
    },function(error)
    {
            return error;
    });
    return promiseend;

Eh bien, je sais que cela peut être beaucoup mieux de code, mais c'est juste pour le but.
Voici le code de Serviceforpromise1 fonction :

    function Serviceforpromise1()
    {
            ...
            return $http.get(*whatever*).then(function (data){
                return data;
            },function(error)
            {
                return $q.reject();
            });
    }

Ne considérer que le cas de Serviceforpromise1 à l'échec. Un q$.reject est renvoyé à la chaîne principale, donc je suis en attente de l'erreur de rappel de "promise1 .ensuite(" d'être appelé et il a fonctionné comme prévu. J'ai décidé pour l'exemple de transfert de l'erreur de la "promise2 .puis" donc, dans cette erreur de rappel, j'ai ajouté la ligne return $q.reject();
Mais il n'a jamais atteint la deuxième erreur de rappel (la "promise2 .puis") et je ne comprends pas pourquoi (comme Serviceforpromise1, je suis retourné le refus de la promesse !)

Je serai heureux de le comprendre en profondeur ce qui se passe ici.
Merci pour votre aide.

Comment avez-vous vérifié que promise2'erreur de rappel n'est pas appelée? Je ne vois rien là qui vous dira si il a été appelé.
Oui je me connecte à la console, mais supprimer le code d'enregistrement pour le poste pour ne pas les déranger avec unrelevant lignes

OriginalL'auteur Patrice Pistone | 2015-03-20