2015-01-02 2 views
0

Как я могу отменить ожидающие ajax запросы в AngularJS? Я использую Service для создания ajax-вызова и хочу прервать все ожидающие запросы, если новый выполняется по тому же маршруту.Отменить ожидающий запрос ajax в AngularJS

Вот моя служба:

myService.service('angService', function($http){ 

    this.getfromRemote=function(url){ 
    return $http.get(location+'/dev/apiv-1-0-2/'+url); 
    } 
}); 

Здесь я вызываю службу. Перед следующим, я хочу прервать ожидающие запросы ajax.

angService.getfromRemote('paymentStatement/'+$scope.username) 
          .success(function(response){ 

}) 
+0

возможно дубликат [Как отменить запрос HTTP в $ в AngularJS?] (Http://stackoverflow.com/questions/13928057/how-to-cancel-an-http-request-in-angularjs) –

+0

его не работает для меня – ak1111

ответ

0

Чтобы отменить отложенный $http запрос, вы можете передать обещание собственности тайм-аут $http запроса и вызвать resolve, чтобы прервать запрос.

myService.service('angService',function($http, $q){ 
    var pending = false; 
    var deferred = $q.defer(); 

    this.getfromRemote=function(url){ 
     if (pending) { 
      deferred.resolve(); 
      deferred = $q.defer(); 
     } 
     pending = true; 
     return $http({ 
      method: 'GET', 
      url: location+'/dev/apiv-1-0-2/'+url, 
      timeout = deferred.promise; 
     }).then(function(result) { 
      pending = false; 
      deferred = $q.defer(); 
      return result; 
     }, function(result) { 
      pending = false; 
      deferred = $q.defer(); 
      return result; 
     }); 


    } 

}); 
Смежные вопросы