0
我正在訪問3個API並將其數據聚合到我的頁面上。目前,如果其中一個API調用失敗(可能是該網站處於脫機狀態),則停止執行並且該頁面不包含任何數據。如何處理與AngularJS的失敗API調用
我想繼續執行其餘的API調用,只是忽略那個無聲無息的調用。我怎樣才能做到這一點?
myApp.controller('homeController', function ($scope, $q, $http, $timeout) {
$scope.allTest = function() {
var first = $http.get('/api/drawings/'),
second = $http.get('/api/procedures/'),
third = $http.get('/api/sharepoint/');
$q.all([first, second, third]).then(function (result) {
var tmp = [];
angular.forEach(result, function (response) {
tmp.push(response.data);
});
return tmp;
}).then(function (result) {
$scope.combinedResult = result; // result in combinedResult
});
};
});
我仍想繼續執行其他2個API調用並忽略錯誤(通過忽略我的意思是默默登錄或嘗試重新加載該API調用) – JeffC 2015-02-10 20:57:39
在服務中包含這些API調用,所以不要直接調用它們控制器,通過服務調用,如你所說,將會處理和記錄失敗。當然,接下來的兩個電話也需要進行相同的處理,以便您可以隨時致電他們。所以它會是'apiService.retrieveDrawings','apiService.retrieveProcedures','apiService.retrieveSharepoint',並且每個'retrieve *'方法都會處理錯誤和日誌。 – vtor 2015-02-10 21:08:40
這樣做!感謝您的指導。這工作得很好。我優雅地忽略服務中的離線或錯誤,有時會發生,並且仍將數據呈現給沒有錯誤的屏幕。 – JeffC 2015-02-11 02:31:14