我有一些看起来像这样的代码
angular.forEach(config.tvshows.shows, function(show) {
promises.push($http.get('http://epguides.frecar.no/show/' + show.replace(/\s|\./g, '') + '/next/'));
});
return $q.all(promises).then(function(response) {
for (var i = 0; i < response.length; i++) {
service.shows.push(response[i]);
}
});
};
我的想法是我有一个由http请求组成的列表(promises)。大多数都是成功的,但有些可能会失败。我不能简单地删除失败的请求,因为它们有时会成功,而有时会失败。
但是,如果其中一个回复失败,我不会将任何回复推送到&#39; service.shows&#39;。有没有办法处理404或http请求上的任何错误响应,以便为工作请求代码正常运行?
答案 0 :(得分:4)
您可以将自定义处理程序添加到失败的http
请求中,如下所示:
angular.forEach(config.tvshows.shows, function(show) {
promises.push($http.get('http://epg\./g, ') + '/next/').catch(function() {
// return whatever is needed here
}));
});
这样,如果响应失败,您可以返回您的预设响应,$ q.all链将不会停止。如果响应没有失败,您将获得服务器发送的响应。