覆盖angularjs函数$ http.get

时间:2016-01-20 12:57:35

标签: javascript angularjs

我有以下代码:

$http.get(url).success(function(response,status,header,config) {
    $scope.mymodel = response;
}

我想检查http状态并调用一个函数。 我必须在整个项目中对大约100个http.get调用进行此更改。所以我想跳过这个覆盖这样的成功函数。

function success(response,status,header,config) {
    if(status!=200){
       //my stuff
    }
    super.success(response,status,header,config);
}

replace $http.get(url).success $http.get(url).success2的另一种可能性是告诉我的伙伴:"From now on guys use $http.get(url).success2 is cooler!"

更新

我已经知道这是一个已弃用的函数,我必须使用它,因为它是一个项目要求。

2 个答案:

答案 0 :(得分:1)

您应该使用BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); String msg = in.readLine(); if(msg.equals("complete")){ requestComplete = true; } 来实现此目标。

您可以嗅探$httpProvider.interceptors之间的请求和响应以执行任何操作并返回$ q unscathed。

$http

在上面的代码中,我获得了工厂$httpProvider.interceptors.push(['$q', 'mathScriptLoadError', function($q, mathScriptLoadError) { return { requestError: function(rejection){ mathScriptLoadError.anyError(rejection); return $q.reject(rejection); }, responseError: function(rejection){ mathScriptLoadError.anyError(rejection); return $q.reject(rejection); } }; }]); 的{​​{1}}函数来检查anyError并根据值调用某个进程。但这并没有在任何级别打扰mathScriptLoadError

答案 1 :(得分:0)

  

弃用通知

     

已弃用$http遗留承诺方法successerror。     请改用标准then方法。     如果$httpProvider.useLegacyPromiseExtensions设置为     false然后这些方法会抛出$http/legacy错误。

- AngularJS $http Service API Reference -- Deprecation Notice

告诉你的同伴:"From now on guys use $http.get(url).then is cooler!"

对于其他读者:

响应拦截器

AngularJS框架提供了三个注入响应拦截器函数的位置。

XHR响应可以在全局,本地或按类拦截和修改。