有人可以解釋爲什麼第二個由then函數返回的承諾解決了嗎?它在Promises實現中看起來像Angular JS bug。根據文件here第二個承諾也應該被拒絕。當主要承諾被拒絕時,角度解決了由「然後」函數返回的承諾
// 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>
相關http://stackoverflow.com/questions/18758058/angularjs-promise-rejection-chaining –
@georgeawg ......或返回'$ q.reject ()' –