Kettenversprechen mit AngularJS

Ich habe einen Dienst namens paymentStrategy, der in meinen Controller eingespeist wird.

$scope.buy = function() {
  paymentStrategy.buy()
    .then(function(response) {

  }
}

Diese Kaufmethode von paymentStrategy löst mehrere Methoden aus, die nacheinander aufgerufen werden müssen. Wenn alle Methoden in buy () abgeschlossen sind, muss () aufgerufen werden.

Es ist wahrscheinlich trivial, aber ich bin ziemlich neu in der Winkel.

Im Moment wird buy (). Then () direkt nach den init () -Methoden ausgelöst. Ich habe das Gefühl, wir müssen alle diese Methoden in eine Reihe von Versprechungen setzen und $ q.all () anwenden.

Jede Hilfe oder Anregung wäre sehr dankbar

angular.module('deps-app.payment.services', []).
  factory('paymentStrategy', function($q) {

 var deferred = $q.defer();
 var ITEM_TO_PURCHASE = "test.beer.managed";
 var promises = [];

 var handlerSuccess = function(result) {
      deferred.resolve(result);
  };

 var handlerError = function(result) {
      deferred.reject(result);
  };

 _init = function() {

     inappbilling.init(handlerSuccess, handlerError, { showLog:true }); 
     return deferred.promise;
    }

  _purchase = function() {
        inappbilling.buy(handlerSuccess, handlerError, ITEM_TO_PURCHASE);
        return deferred.promise;
  }

  _consume = function() {
        inappbilling.consumePurchase(handlerSuccess, handlerError, ITEM_TO_PURCHASE);
        return deferred.promise;
  }

return  {

     buy: function() {

      _init();
        .then(_purchase());
        .then(_consume());  

      return deferred.promise;                    
    }

 }
});

Antworten auf die Frage(2)

Ihre Antwort auf die Frage