我有以下代码:
$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!"
我已经知道这是一个已弃用的函数,我必须使用它,因为它是一个项目要求。
答案 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
遗留承诺方法success
和error
。 请改用标准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框架提供了三个注入响应拦截器函数的位置。
$http
服务,请参阅AngularJS $http Service API Reference -- interceptors。
$resource
服务,请参阅AngularJS $resource Service API Reference。
配置$httpProvider
,请参阅AngularJS $httpProvider API -- interceptors。
XHR响应可以在全局,本地或按类拦截和修改。