Is it possible to prevent a request using angularjs interceptors ?
$provide.factory(\'myHttpInterceptor\', function($q, someService) {
return {
\'reque
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
}
};
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');