AngularJS: how to prevent a request

Is it possible to prevent a request using angled interceptors?

$provide.factory('myHttpInterceptor', function($q, someService) { return { 'request': function(config) { // here I'd like to cancel a request depending of some conditions } } }); $httpProvider.interceptors.push('myHttpInterceptor'); 
+7
angularjs request
source share
2 answers

In 1.1.5 and later, you can use the timeout property for a configuration object.

In the documentation:

timeout - {number | Promise} - timeout in milliseconds or a promise should abort the request when resolving it.

A 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'); 
+16
source share

I apply this logic that works:

 $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 } }; 
-2
source share

All Articles