Cadeia promete com AngularJS

Eu tenho um serviço chamado paymentStrategy que é injetado no meu controlador.

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

  }
}

Esse método de compra da paymentStrategy aciona vários métodos que precisam ser chamados sequencialmente. Quando todos os métodos em buy () são concluídos, () precisa ser chamado.

Provavelmente é trivial, mas sou bastante novo em angular.

No momento, buy (). Then () é acionado logo após os métodos init (). Tenho a sensação de que precisamos colocar todos esses métodos em uma série de promessas e aplicar $ q.all ().

Qualquer ajuda ou sugestão seria muito apreciada

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;                    
    }

 }
});

questionAnswers(2)

yourAnswerToTheQuestion