bra*_*r19 17 html javascript angularjs
在我的应用程序中,我使用拦截器来捕获所有http响应错误,例如:
var response = function(response) {
if(response.config.url.indexOf('?page=') > -1) {
skipException = true;
}
return response;
}
var responseError = function(rejection) {
if (rejection.status === 401 || rejection.status === 403) {
/**/
}
else if (rejection.status >= 500 || rejection.status === 0) {
/**/
}
else if (rejection.status === 404 && !skipException) {
/**/
}
else if (rejection.status === 404 && skipException) {
/**/
}
else{
/**/
}
return $q.reject(rejection);
};
Run Code Online (Sandbox Code Playgroud)
当我去我的控制器时(当我的getArticles方法返回一些数据时,而不是404 - 当文章数组为空时)一切正常:404 skipException == true被捕获.
但是当我的文章数组为空时,服务器返回404,当我进入该控制器时,我无法获得response.config.url- 没有响应,但为什么?我认为拦截器会捕获所有响应.
$timeout(function() {
$scope.getArticles();
}, 100);
Run Code Online (Sandbox Code Playgroud)
并$scope.getArticles有这样的代码:
getDataService.getArticles($scope.pageNum).then(function(response) {
/**/
});
Run Code Online (Sandbox Code Playgroud)
服务:
var getEventsByScrollService = function(num) {
var deferred = $q.defer();
$http.get(***, {
})
.success(function(response) {
deferred.resolve(response);
}).error(function(err, status) {
if (status === 404){
deferred.resolve([]);
}
else{
deferred.reject(err);
}
});
return deferred.promise;
};
Run Code Online (Sandbox Code Playgroud)
如何根据URL有条件地捕获404?因为这:
if(response.config.url.indexOf('?page=') > -1) {
Run Code Online (Sandbox Code Playgroud)
并不总是有效.
所以...我已经这样做了:
if(rejection.config.url.indexOf('?page=') > -1) {
skipException = true;
}
Run Code Online (Sandbox Code Playgroud)