处理角度承诺中的错误
Handling Errors In Angular Promises
我仍在学习 angular 中的承诺,并且有这段代码,我在其中发出两次"GET"请求。我想在调用另一个请求之前运行一个 get 请求。这工作正常,但是我将如何处理这里的错误?如果我的第一个 GET 请求出现错误,如何找出该错误是什么并阻止我的代码调用第二个 GET 请求?使用我的代码的示例将是最有帮助的。
apiServices.login = function(user,password,callback) {
$http.get("http://magainteractive.com/prototypes/cisco-ima-dashboard/cms/web/api/login/login/?username="+user+"&password="+password+"")
.then(function(contentResponse){
resultsObject.content = contentResponse;
return $http.get("http://magainteractive.com/prototypes/cisco-ima-dashboard/cms/web/api/data/list/");
})
.then(function(dataResponse){
resultsObject.reports = dataResponse;
resultsObject.success = 1;
console.log(resultsObject);
callback(resultsObject);
apiServices.useData(resultsObject);
});
}
dummyData.login(username, password, function (dataStatus) {
if (dataStatus.success = 1) {
$rootScope.loggedIn = true;
$rootScope.selectedDashboard = 1;
} else {
console.log("Error");
}
});
我会做与 Lucas 略有不同的事情,我更喜欢链接一个 catch 块(基本上它会像我们使用的同步try...catch
块一样),而不是添加一个错误回调函数,所以代码会像:
return $http.get(url1)
.then(function(result){
resultsObject.url1 = result;
return $http.get(url2);
}).then(function(result){
resultsObject.url2 = result;
return resultsObject;
}).catch(function(error){
// handle error.
});
PS:你的大部分代码都很好,但我不太确定你为什么会有这样的callback(resultsObject);
,当你使用promises时,回调是多余的,你可以只返回promise链$http.get...
您可以在第一个回调处理中传递第二个参数。如果请求中存在错误,这将触发,然后您可以根据需要处理它:
$http({
method: 'GET',
url: '/someUrl'
}).then(function successCallback(response) {
// this callback will be called asynchronously
// when the response is available
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
或者在您的编码中:
$http.get('/someUrl').then(successCallback, errorCallback);
更多信息在这里
您的代码如下所示:
$http.get("http://magainteractive.com/prototypes/cisco-ima-dashboard/cms/web/api/login/login/?username="+user+"&password="+password+"")
.then(function(contentResponse){
resultsObject.content = contentResponse;
return $http.get("http://magainteractive.com/prototypes/cisco-ima-dashboard/cms/web/api/data/list/");
}, function(error){
//HANDLE ERROR HERE
})
.then(function(dataResponse){
resultsObject.reports = dataResponse;
resultsObject.success = 1;
console.log(resultsObject);
callback(resultsObject);
apiServices.useData(resultsObject);
});
相关文章:
- React JS:未捕获(在承诺中)语法错误:在位置 0 的 JSON 中意外<令牌
- 承诺-如何正确地将错误附加到此示例
- 我能处理来自gap.client.load'的错误吗;的承诺
- $q.reject和处理AngularJS链接承诺中的错误
- 如何在使用替代承诺时解释 ajax 调用中的错误
- 处理角度.js承诺错误状态
- 为什么承诺会捕获语法错误
- Chai正如承诺:当承诺抛出错误时,处理错误
- 如何创建角度承诺中捕获的错误
- 停止蓝鸟承诺中的错误传播
- 当我在异步操作Redux上开始单元测试时,没有定义错误承诺
- 为什么在Chrome上忽略被拒绝的承诺是错误的
- 抓住柴和承诺的错误
- 如何链接javascript承诺和错误
- 在第一次错误回调时退出承诺链
- 如何调试错误:;未捕获(承诺中)缺少参数单元”;
- JS bluebird承诺错误没有给出任何细节
- Shopify Buy JS SDK在IE 11上抛出错误—承诺未定义
- 如何调试“错误:承诺被拒绝,无理由或虚假理由”;在摩卡测试中
- 多个承诺错误(承诺必须通过new构造)