本文介绍了停止angularjs拦截请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我怎么能停在Angularjs拦截的请求。

有没有办法做到这一点?

我试图用承诺和发送拒绝决心,而不是!

  .factory('connectionInterceptor',['$ Q','$超时',
   功能($ Q $超时){
    VAR connectionInterceptor = {
        要求:功能(配置){
            变种Q = $ q.defer();
            $超时(函数(){
                q.reject();
            },2000)
            返回q.promise;
            //返回配置;
        }
    }
    返回connectionInterceptor;
  }
])
的.config(函数($ httpProvider){
   $ httpProvider.interceptors.push('connectionInterceptor');
});


解决方案

在$ HTTP服务有一个选项
暂停以完成这项工作。
你可以这样做:

  angular.module('对myApp')
    .factory('httpInterceptor',['$ Q','$位置',函数($ Q $位置){
        变种消除= $ q.defer();
        返回{
            请求:功能(配置){
                //承诺解决时应中止请求。
                config.timeout = canceller.promise;
                返回配置;
            },
            回应:功能(响应){
                返回响应;
            },
            responseError':函数(拒绝){
                如果(rejection.status === 401){
                    canceller.resolve('擅自');
                    $ location.url('/用户/登入');
                }
                如果(rejection.status === 403){
                    canceller.resolve('故宫');
                    $ location.url('/');
                }
                返回$ q.reject(拒绝);
            }        };
    }
    ])
    //的Http Intercpetor检查XHR请求身份验证失败
   的.config(['$ httpProvider',函数($ httpProvider){
        $ httpProvider.interceptors.push('httpInterceptor');
    }]);

How can I stop a request in Angularjs interceptor.

Is there any way to do that?

I tried using promises and sending reject instead of resolve !

.factory('connectionInterceptor', ['$q', '$timeout',
   function($q, $timeout) {
    var connectionInterceptor = {
        request: function(config) {
            var q = $q.defer();
            $timeout(function() {
                q.reject();
            }, 2000)
            return q.promise;
            // return config;
        }
    }
    return connectionInterceptor;
  }
])
.config(function($httpProvider) {
   $httpProvider.interceptors.push('connectionInterceptor');
});
解决方案

The $http service has an optionstimeout to do the job.you can do like:

angular.module('myApp')
    .factory('httpInterceptor', ['$q', '$location',function ($q, $location) {
        var canceller = $q.defer();
        return {
            'request': function(config) {
                // promise that should abort the request when resolved.
                config.timeout = canceller.promise;
                return config;
            },
            'response': function(response) {
                return response;
            },
            'responseError': function(rejection) {
                if (rejection.status === 401) {
                    canceller.resolve('Unauthorized');
                    $location.url('/user/signin');
                }
                if (rejection.status === 403) {
                    canceller.resolve('Forbidden');
                    $location.url('/');
                }
                return $q.reject(rejection);
            }

        };
    }
    ])
    //Http Intercpetor to check auth failures for xhr requests
   .config(['$httpProvider',function($httpProvider) {
        $httpProvider.interceptors.push('httpInterceptor');
    }]);

这篇关于停止angularjs拦截请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-29 15:09
查看更多