Quelqu'un peut-il expliquer pourquoi la deuxième promesse retournée par then function est résolue? Il ressemble à un bogue Angular JS dans sa mise en œuvre Promises. Selon la documentation here la deuxième promesse aurait également dû être rejetée.Angular résout la promesse retournée par la fonction "then" lorsque la promesse principale est rejetée
// Code goes here
var myMod = angular.module("myMod", []);
myMod.controller('bodyCtrl', function($scope, $timeout, $q) {
var deferred = $q.defer();
deferred.promise.then(function(d) {
console.log("success called");
return d;
}, function(d) {
console.log("failure called");
return d;
})
.then(function(d) {
console.log("success called2");
return d;
}, function(d) {
console.log("failure called2");
return d;
});
$timeout(function() {
deferred.reject();
}, 2 * 1000);
});
<!DOCTYPE html>
<html ng-app="myMod">
<head>
<script src="https://code.angularjs.org/1.5.8/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-controller="bodyCtrl">
<h1>Hello Plunker!</h1>
</body>
</html>
liés à http://stackoverflow.com/questions/18758058/angularjs-promise-rejection-chaining –
@georgeawg ... ou retourner 'q.reject de $() ' –