Я получаю доступ к 3 API и агрегирую их данные на своей странице. В случае сбоя одного из вызовов API (возможно, сайт отключен) выполнение останавливается, и страница не содержит никаких данных.Как бороться с вызовом API отказа с помощью AngularJS
Я хочу продолжать выполнять оставшиеся вызовы 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
Encapuslate эти вызовы API в службах, поэтому вместо их прямого вызова контроллер, вызов через службу, где сбой будет обработан и зарегистрирован, как вы сказали. И, конечно, ваши следующие два звонка также должны иметь одинаковое обращение, чтобы вы могли их называть. Таким образом, это будет нечто «apiService.retrieveDrawings», «apiService.retrieveProcedures», «apiService.retrieveSharepoint», и каждый метод 'retrieve *' будет обрабатывать ошибки и регистрировать. – vtor
Это было! Спасибо за руководство. Это получилось очень хорошо. Я благосклонно игнорирую автономные сообщения или ошибки в сервисе, которые иногда случаются, и все еще выводят данные на экран, который не имеет ошибок. – JeffC