Mam następujące skrzypce: http://jsfiddle.net/thelgevold/3uv9nnjm/6/Wykonywanie następnie po połowu
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');
});
});
To w zasadzie tylko szybki $ q obietnica POC. Moje pytanie brzmi: dlaczego ostatnia klauzula zostaje wywołana, gdy obietnica zostaje odrzucona? Wyjście jest w następujący sposób:
ERROR1
error2
drugą następnie
rozumiem dlaczego ERROR1/error2 są drukowane, ale myślałem, że druga następnie ciąg nie powinny być drukowane od obietnica była odrzucony. Pomyślałem, że pominie "drugie zdanie" z tego samego powodu, że pominięto "pierwszy". Jakieś myśli?
Dzięki! To ma sens – TGH