Ich habe die folgende Geige: http://jsfiddle.net/thelgevold/3uv9nnjm/6/Ausführen dann nach Fang
angular.module('hello',[]).controller('helloController',function($q){
console.clear();
function someService(){
var deferred = $q.defer();
deferred.reject({e:'error'});
return deferred.promise;
}
function callService(){
return someService().then(function(obj){
console.log('first then');
}).
catch(function(e){
console.log('error1');
var deferred = $q.defer();
deferred.reject({e:'error'});
return deferred.promise;
});
}
callService().catch(function(e){
console.log('error2');
}).then(function(e){
console.log('second then');
});
});
Es ist im Wesentlichen nur ein schnellen $ q Versprechen POC. Meine Frage ist: Warum wird die letzte then-Klausel aufgerufen, wenn das Versprechen abgelehnt wird? Die Ausgabe wird wie folgt dar:
error1
error2
Sekunden dann
Ich verstehe, warum error1/error2 gedruckt werden, aber ich dachte, die zweite Zeichenfolge sollte dann nicht gedruckt werden, da die Verheißung abgelehnt. Ich dachte, es würde "second then" aus dem gleichen Grund auslassen, aus dem das "first then" weggelassen wird. Irgendwelche Gedanken?
Danke! Das macht Sinn – TGH