Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs中的错误处理_Angularjs - Fatal编程技术网

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()。这样,只有一个地方可以处理错误,那就是我的控制器。谢谢您的输入