Mam usługę o nazwie paymentStrategy, która zostanie wprowadzona do mojego kontrolera.Łańcuchowe obietnice z AngularJS
$scope.buy = function() {
paymentStrategy.buy()
.then(function(response) {
}
}
Ta metoda zakupu z paymentStrategy uruchamia kilka metod, które należy nazywać sekwencyjnie. Po wykonaniu wszystkich metod w funkcji purchase() należy wywołać metodę().
Jest to prawdopodobnie trywialne, ale jestem nowy w kanciastym.
W tej chwili buy(). Then() zostaje wyzwolony bezpośrednio po metodach init(). Mam wrażenie, że musimy umieścić wszystkie te metody w szeregu obietnic i zastosować $ q.all().
Każda pomoc lub sugestie będą bardzo mile widziane
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;
}
}
});
Czy wszystkie metody inappbilling, takie jak init, buy i consumePurchase obietnica zwrotu? – Chandermani
Brzmi nieźle, ale czy możesz wyjaśnić, jak to zrobić? –
To było dla ciebie pytanie Florent. Problem z kodem polega na tym, że rozwiązuje się obietnicę wywołania zwrotnego init i innych wywołań zwrotnych, ale przed wywołaniem rozwiązania należy poczekać na zakończenie wszystkich połączeń. – Chandermani