我有一个叫做paymentStrategy的服务被注入到我的控制器中。
$scope.buy = function() {
paymentStrategy.buy()
.then(function(response) {
}
}
这个支付策略的购买方法会触发多个需要按顺序调用的方法。当buy()中的所有方法都完成后,需要调用then()。
这可能很琐碎,但我对Angular还比较陌生。
目前,buy().then()在init()方法之后立即触发。我感觉我们需要将所有这些方法放入一个promise数组中,并应用$q.all()。
任何帮助或建议都将不胜感激。
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;
}
}
});