[英]AngularJS rejected promise is not calling onRejection for $q.all()
所以我有這段代碼:
var deferred = $q.defer();
var promises = [];
angular.forEach($scope.devices, function(device){
var promise = memberService.InsertDevice(memberId, device).then(function (data) {
//device inserted
}, function (rejectData) {
if (rejectData.Error == "Cannot insert record since it already exists") {
alert("The number " + device.PhoneNumber + " already exists. Try with a different number.");
}
});
promises.push(promise);
});
$q.all(promises).then(function (data) {
//perform something on Success
}, function (data) {
//perform something on rejection
//THIS NEVER GETS CALLED EVEN IF I GET THE ALERT FROM THE TOP
});
看看最后的評論。 出於某種原因,即使我得到警報(這意味着其中一個呼叫出現問題),也永遠不會調用整體拒絕。
承諾為您提供了在失敗時“恢復”的機會,因此您必須在錯誤句柄中返回拒絕,以使$q.all
知道它確實失敗了。 以下代碼中唯一的增量是return $q.reject(rejectData);
var deferred = $q.defer();
var promises = [];
angular.forEach($scope.devices, function(device){
var promise = memberService.InsertDevice(memberId, device).then(function (data) {
//device inserted
}, function (rejectData) {
if (rejectData.Error == "Cannot insert record since it already exists") {
alert("The number " + device.PhoneNumber + " already exists. Try with a different number.");
}
return $q.reject(rejectData);
});
promises.push(promise);
});
$q.all(promises).then(function (data) {
//perform something on Success
}, function (data) {
//perform something on rejection
//THIS NEVER GETS CALLED EVEN IF I GET THE ALERT FROM THE TOP
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.