如果传递了错误代码,如何取消响应处理? 我想捕获错误代码为500的响应,并阻止我的自定义服务请求调用执行其错误及其成功函数。我希望响应“停留”在拦截器中,而不是传递给我的自定义服务成功或错误回调。我怎样才能做到这一点?是否存在“拦截”响应并在全球范围内处理它们的最佳做法?
我的拦截器具有此功能:
function responseError( response ) {
switch ( response.status ) {
case 500:
// cancel the processing of this response
// prevent the response from calling error at "HERE" below
// currently, the error function is called,
// even when the response is rejected here
break;
}
return $q.reject( response );
}
我的后端服务具有以下功能:
function getJson( url, params ) {
var deferred = $q.defer();
$http( {
url: that.host + url,
method: "GET",
params: params || {},
headers: {
'Accept': 'application/json'
}
} ).success( function ( data, status, headers, config ) {
deferred.resolve( data );
} ).error( function ( data ) {
deferred.reject( data );
} ) ;
return deferred.promise;
}
最后,自定义服务会调用该请求:
return BackendService.getJson( "/abc/def", params )
.then( function ( data ) {
return data;
}, function( data ) {
// HERE error function should not be called, if 500
} );