我不了解then
,
这是documentation -
然后(successCallback,errorCallback,notifyCallback) - 无论如何 当承诺已经或将要解决或拒绝时,请拨打一个 成功或错误回调一旦结果异步 是可用的。使用单个参数调用回调: 结果或拒绝原因。
所以,请按照以下小代码部分进行尝试 -
var deferred = $q.defer();
deferred.reject();
deferred.promise.then(function () {
console.log("1st resolove");
},
function () {
console.log("1st reject");
}
).then(function () {
console.log("2nd resolve");
},
function () {
console.log("2nd reject");
}
);
1)为什么要记录 -
1st reject
2nd resolve
而不是 -
1st reject
2nd reject
2)我必须更改以使其记录 -
1st reject
2nd reject
var myAppModule = angular.module('myApp', []).
controller('myCtrl',function($scope,$q){
var deferred = $q.defer();
//deferred.resolve();
deferred.reject();
deferred.promise.then(function () {
console.log("1st resolove");
},
function () {
console.log("1st reject");
}
).then(function () {
console.log("2nd resolve");
},
function () {
console.log("2nd reject");
}
);
});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.20/angular.min.js"></script>
<div ng-app="myApp">
<div ng-controller="myCtrl"></div>
</div>
&#13;
答案 0 :(得分:7)
你错过了下一行文档:
此方法返回一个新的承诺,通过该协议解析或拒绝 successCallback的返回值,errorCallback。
如果您希望下一个链因任何原因而成为同一个承诺的结果,请从您的处理程序中返回deferred.promise。
req
如果你想要返回成功/失败的回调,取决于你成功的第一个// This will always trigger the reject callback
deferred.promise.then(function () {
console.log("1st resolove");
return deferred.promise;
},
function () {
console.log("1st reject");
return deferred.promise;
}
)
和失败中的return $q.when()
的结果:
return $q.reject()