如何取消拦截器中的响应

时间:2015-07-15 07:38:31

标签: angularjs

如果传递了错误代码,如何取消响应处理? 我想捕获错误代码为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
                } );

0 个答案:

没有答案