Angularjs中的错误处理
各位 我编写了一个服务,它以以下方式从我的服务器获取数据:Angularjs中的错误处理,angularjs,Angularjs,各位 我编写了一个服务,它以以下方式从我的服务器获取数据: myApp.factory('CommonHttpService',函数($http,$q){ var-myUrl; 返回{ 查询:函数(表名){ //形成URl myUrl=baseUrl+“?table=“+tableName; //创建延迟对象 var deferred=$q.deferred(); //调用web api从表中获取所有行 $http.get(myUrl).success(函数(数据){ 延迟。解析(数据); })
myApp.factory('CommonHttpService',函数($http,$q){
var-myUrl;
返回{
查询:函数(表名){
//形成URl
myUrl=baseUrl+“?table=“+tableName;
//创建延迟对象
var deferred=$q.deferred();
//调用web api从表中获取所有行
$http.get(myUrl).success(函数(数据){
延迟。解析(数据);
}).错误(函数(){
//在出现故障时发送友好的错误消息
deferred.reject(“获取项目时出错”);
});
//返回承诺对象
回报。承诺;
}});
我的控制器这样称呼它:
//获取整个列表
CommonHttpService.query(tableName).then(函数(数据){
$scope.list=数据;
});
所以我的问题是,在整个计划中,我不确定如何或在哪里处理错误。
该错误是否在deferred.reject()中得到处理?如果是,如何处理
或者它是在控制器中的.then()之后处理的
理想情况下,我应该向用户显示某种消息,比如“找不到数据”,然后向管理员或其他人发送错误详细信息
那些曾经这样做过的人,在这之前,如果有任何建议,请将它们传递下去
感谢您的建议。然后期待两个功能,第一个是成功,第二个是失败
CommonHttpService.query(tableName).then(function(data){
$scope.list=数据;
},函数(错误){
警报(“错误”)
});
您应该直接返回$http.get,它还返回一个承诺
--重构--
myApp.factory('CommonHttpService',函数($http,$q){
var-myUrl;
返回{
查询:函数(表名){
myUrl=baseUrl+“?table=“+tableName;
//$http.get还返回一个承诺
返回$http.get(myUrl)
}});
CommonHttpService.query(tableName).then(函数(数据){
$scope.list=数据;
},函数(错误){alert(error});
谢谢Ajay..deferred.reject()在上面的整个等式中有什么作用deferred.reject表示您的承诺已被拒绝,这表示承诺已返回错误,因此then()的错误函数如果执行deffered.resolve,则将执行,这意味着promise已成功解析,Success函数代码将被执行,因此http.get中的错误(function(){..}也将被执行,然后执行error函数()也会执行。出错时执行两个函数的全部目的是什么?我已经重构了代码并直接返回http.get()。这样,只有一个地方可以处理错误,那就是我的控制器。谢谢您的输入