如何忽略来自$http GET请求的错误消息?
How do you ignore error messages from an $http GET request?
我有一个函数,应该看看我的数据库是否有一个特定的链接。我不确定是否不可能做到这一点,或者如果我只是做错了。我正在使用Angular HTTP GET请求,如果找到了对象,我就尝试返回它。以下是我的文件:
var foo = function(list, value) {
for(var i = 0; i < list.length; i++) {
$http.get(list[i]).then(function(object) {
var dbObject = object.data;
if(contains(dbObject, value) {
return list[i];
}
});
}
}
};
所以,我希望返回链接到包含该值的JSON对象的有效url。有更好的方法吗?现在,它抛出一个未找到的错误,在进程甚至完成之前,我希望找到一种方法来忽略停止我的程序的错误。
我认为,这里的逻辑有一些缺陷,$http.get()返回一个承诺。它将无法得到解决,如果你得到http错误。为了使用错误处理,实际上必须传递一个错误处理函数,该函数将在拒绝承诺时调用。
$http.get(list[i]).then( success_handler, error_handler );
另外,正如Thomas在评论中提到的,你可能没有正确使用它。您的方法将启动所有get请求并返回。这些get请求的结果将在稍后出现,并在每个结果上执行成功或错误处理程序。
您可以创建一个承诺数组,然后使用$q.all
方法返回并测试所有结果。
(function (ng) {
'use strict';
ng.module('HttpDemo')
.factory('LinkChecker', LinkChecker)
.controller('LinkCheckerDemoController', LinkCheckerDemoController);
function LinkChecker ($q, $http) {
function LinkCheckerFunc (links, value) {
return $q(function (resolve, reject) {
var linkPromises = [];
ng.forEach(links, function (link) {
linkPromises.push($http.get(link));
});
$q.all(linkPromises)
.then(_onGetLinksSuccess, reject);
function _onGetLinksSuccess (responses) {
var validLinks = [];
ng.forEach(responses, function (linkToCheck) {
var link = linkToCheck.data;
if (contains(link, value) {
validLinks.push(link);
}
});
resolve(validLinks);
}
});
}
return (LinkCheckerFunc);
}
function LinkCheckerDemoController (LinkChecker, $log) {
var linkCheckerDemoVM = this;
linkCheckerDemoVM.checkLinks = checkLinks;
// example usage
function checkLinks () {
var validLinks = new LinkChecker(
linkCheckerDemoVM.links,
linkCheckerDemoVM.value
);
validLinks.then(_onGetValidLinksSuccess, _onGetValidLinksError);
function _onGetValidLinksSuccess (links) {
$log.info('Valid Links', link);
}
function _onGetValidLinksError (err) {
$log.error(err);
}
}
}
})(angular);
相关文章:
- 尝试发布大型JSON数据时出现错误请求错误
- 仅在 IE 中使用 jQuery 发布数据时出现错误请求错误
- JavaScript JSONP请求错误--未捕获的语法错误:意外的令牌:
- 正在生成$http.get请求..错误
- CORS预检请求错误无法通过安装npm cors软件包解决
- JSON PUT 请求错误
- 400 错误请求错误在 Ajax POST 到 spring RestController
- 使用 cURL 请求 svg.sencha.io 时请求错误
- WCF Web 服务在通过 Javascript 调用时返回“错误请求”错误
- JSFiddle “请使用后请求”错误
- 使用 JS 更改映像路径的请求错误
- AngularJS对跨源资源执行OPTIONS HTTP请求=>错误401
- 条纹::无效请求错误(此客户没有附加的付款来源)
- JSON 请求错误 500
- Ajax 请求错误 404
- 在 Node.js 服务器内发出异步请求错误:“类型错误:对象 #<对象> 没有方法'_implicitHeader'”
- 为什么这个 $.getJSON 请求错误
- 角度/业力 - 预期请求和观察到的请求相同时的“意外请求”错误
- 从 Mapbox.js 使用“LoadURL()”时出现“跨源请求错误”
- Chrome 应用/扩展程序 - 后台请求错误,或允许应用问题加载 Google 文档 API