AngularJS : How to prevent a request

后端 未结 2 823
臣服心动
臣服心动 2020-12-20 17:29

Is it possible to prevent a request using angularjs interceptors ?

$provide.factory(\'myHttpInterceptor\', function($q, someService) {
  return {
    \'reque         


        
相关标签:
2条回答
  • 2020-12-20 17:51

    I apply this logic which is working:

    $scope.cancelRequest = 0;               // initilize taking variable
    $scope.searchUser = function() {
        $scope.cancelRequest = 0;           // initilize taking variable
        var opts = {};
        $scope.userList = [];               //array in witch i store the list
        if($scope.searchFrind != ""){       // checking the value of the model is blank or their is some data
            opts.limit_size = 10; 
            ProfileService.searchUser(opts, function(data) {   // calling the service which call the http request
                if( $scope.cancelRequest == 0 ){    // checking the value of cancelRequest as if the request is late and we doesnot want it then it fall in the else case
                    angular.forEach(data.data.users,function(user) {
                        $scope.userList.push(user);
                    })
                }else{                          //when the cancelRequest is notequal 0 then this part run
                    $scope.userList = [];       //empty the array
                }
            });
        }else{
            $scope.userList = [];
            $scope.cancelRequest = 1; //changing the value of cancelRequest to 1 so that the pending http request  after completion does not disturb the array or any model
        }
    };
    
    0 讨论(0)
  • 2020-12-20 17:57

    In 1.1.5 and later you can use the 'timeout' property of the configuration object.

    From the documentation:

    timeout – {number|Promise} – timeout in milliseconds, or promise that should abort the request when resolved.

    Simple example:

    $provide.factory('myHttpInterceptor', function($q, someService) {
      return {
        'request': function(config) {
    
            var canceler = $q.defer();
    
            config.timeout = canceler.promise;
    
            if (true) {
    
                // Canceling request
                canceler.resolve();
            }
    
            return config;
        }
      }
    });
    
    $httpProvider.interceptors.push('myHttpInterceptor');
    
    0 讨论(0)
提交回复
热议问题