javascript - Angular 误差和超时工厂

标签 javascript angularjs error-handling factory

在我的项目中,我有一段代码通过 REST API 使用 Parse.com 执行 CRUD。我想在错误处理程序中插入一个通用(项目范围)错误函数的函数。

我考虑过工厂/服务或者可能通过$rootScope传递一些东西。

其次,我想将所有 api 调用包装在超时函数中,这样如果在特定时间内没有响应,我可以向用户发出有用的通知。

ParseFactory.provider('Programme').getAll().success(function(data){
     $scope.programmes = data.results;

  }).error(function(response){
    $ionicPopup.alert({
    title: 'Unable to load - Please check your connection '
    });

  });

任何有关如何最好地实现这一目标的示例都会受到热烈欢迎。

=== 编辑 - 添加 ParseFactory 代码 ===

.factory('ParseFactory',['$http','PARSE_CREDENTIALS',function($http,PARSE_CREDENTIALS){
    var baseUrl = 'https://api.parse.com/1/classes/';
        return {
            provider:function(type) {
                var userQuery = {'userId': Parse.User.current().id};
                return {
                    getAll:function(){
                        return $http.get(getUrl(type),getUserParams());
                    },
                    get:function(id){
                        return $http.get(getUrl(type)+id,getParams());
                    },
                    create:function(data){
                        return $http.post(getUrl(type),data,getParams());
                    },
                    edit:function(id,data){
                        return $http.put(getUrl(type)+id,data,getParams());
                    },
                    delete:function(id){
                        return $http.delete(getUrl(type)+id,getParams());
                    }
                }
                function getUrl(type) {
                    return baseUrl+type;
                }

                function getParams() {
                    return {
                            headers:{
                                'X-Parse-Application-Id': PARSE_CREDENTIALS.APP_ID,
                                'X-Parse-REST-API-Key':PARSE_CREDENTIALS.REST_API_KEY,
                                'X-Parse-Session-Token': PARSE_CREDENTIALS.PARSE_SESSION,
                                'Content-Type':'application/json'
                            }      
                    }    
                }
            }
        }

    }])

非常感谢

最佳答案

Regarding single error handler function which shows the ionicPopup:

您可以使用错误回调函数中的 $rootScope.$emit 发出事件。 您可以在 run() 方法或 factory 中使用 $rootScope.$on 监听所有这些事件,它将显示 $ionicPopup

在错误处理程序中:

$rootScope.$emit('errorEvent',
           {"message" : "Pass your custom message here", "errorObject": errorObject} 
);

在您的事件监听器中

app.run(function($ionicPopup) {
    $rootScope.$on("errorEvent", function(event, data) {
      // you can access that here
       $ionicPopup.alert({
            title: data.message
        });
   });
});

更新:

对于超时选项,请在 getParams() 函数中添加超时配置属性

 function getParams() {
     return {
         timeout: 18000, // adjust this value
         headers: {
             'X-Parse-Application-Id': PARSE_CREDENTIALS.APP_ID,
             'X-Parse-REST-API-Key': PARSE_CREDENTIALS.REST_API_KEY,
             'X-Parse-Session-Token': PARSE_CREDENTIALS.PARSE_SESSION,
             'Content-Type': 'application/json'
         }
     }
 }

关于javascript - Angular 误差和超时工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29718170/

相关文章:

javascript - Database.query(Query) 的返回类型不是数组?

javascript - 从现有的 javascript Date() 对象获取当前时间?

javascript - 查找标签之间的特定值

javascript - 对 AngularJS 中的复选框值进行排序

javascript - AngularJS ....无法注入(inject) View 。

javascript - 使用 JavaScript 查找最大变量

javascript - 如何用 Angular.js 动态生成 DOM?

c - 在 C 中使用字符串修剪删除空格、换行符和制表符

java - setVisible(true/false)错误JFrame

mysql - 如何在 View 中选择模型的特殊索引?