2016-04-19 6 views
1

Meine ApiService zu stoppen. Wenn ich die Versprechen drucke, drucken sie als Promise Objekt. Jetzt, wie man sie stoppt? Ich habe $q.defer() unter apiService nicht verwendet. Ich bin mir nicht sicher, was der beste Weg ist. Versucht resolve(), aber es zeigt resultBook.lowestOnlinePricePromise.resolve is not a function. Hilfe benötigt.Wie laufende HTTP-Anfrage in AngularJS

I Version 1.4.5

Vielen Dank im Rat verwenden.

Antwort

2

Machen GET & POST Funktionen wie dies in apiService

 function _get(url, config) { 
      var defer = $q.defer(); 

      var promise = $http.get(url, { timeout: defer.promise}); 

      promise.abort = function(reason){ 
       defer.resolve(reason); 
      }; 

      return promise; 
     } 

dann auf dem Controller:

function doSearch(data){ 
     angular.forEach($scope.bookSearchResult,function(book){ 
       (book.lowestOnlinePricePromise = 
        bookService.getLowestOnlinePrice(book.bookIsbn)).then(function(response){ 
           ... 
        }).catch(function(response){ 
           ... 
        }); 
     }); 
} 

function onClick(){ 

     angular.forEach($scope.bookSearchResult,function(resultBook){ 
       resultBook.lowestOnlinePricePromise.abort(); 

      }); 
} 

In dieser Lösung wird eine abort() Funktion wird mit dem promise hinzugefügt. Dann wurde das einzige Versprechen auf Controller gespeichert.

Blick wieder

(book.lowestOnlinePricePromise = bookService.getLowestOnlinePrice(book.bookIsbn)).then() 

Und wenn nur die abort() Funktion benötigt nennen.

Hilfe gefunden: http://www.bennadel.com/blog/2616-aborting-ajax-requests-using-http-and-angularjs.htm