我誤解了承諾,最後呢?角度承諾返回404,最終不會觸發
我發佈到尚未構建的API。它返回一個404 - 正如我所期望的那樣 - 但控制器函數AdminManifestService.postManifest永遠不會結束,所以我有一個微調(永遠綁定到vm.processingButton)。
它不應該一收到404就返回失敗的承諾嗎?
控制器:
vm.sendManifest = function() {
vm.processingButton = true;
var manifest = vm._buildManifest();
AdminManifestService.postManifest(manifest)
.then (
function success(response) {
toastr.success("Manifest has been sent.");
},
function fail(response) {
toastr.error(response.data);
}
)
.finally(function(){
vm.processingButton = false;
}
);
}
服務:
function adminManifestService($http, $q, ngAuthSettings) {
var dataSource = 'api';
// GET User Markups
var _postManifest = function (data) {
return $q (function(resolve, reject) {
switch (dataSource) {
case 'api': //staging - live api data
return $http({
method: 'post',
url: serviceBase + 'api/Admin/Manifest/',
data: data
}).then(function(results) {
resolve(results.data);
});
break;
default: // dev - local json
resolve();
}
});
};
adminManifestService.postManifest = _postManifest;
return adminManifestService;
}
'finally'是'$ q'承諾的方法,即OP使用。請參閱[文檔](https://docs.angularjs.org/api/ng/service/$q) – Iso
恐怕我無法解析這句話。問題是什麼?解決辦法是什麼? – DaveC426913
有一個評論(現在刪除)詢問你是如何來到'finally'的,因爲它不屬於Promises規範。它確實不是規範的一部分,但帶有'$ q' :) – Iso