Tôi có một dịch vụ gọi là paymentStrategy được tiêm vào bộ điều khiển của tôi.Chuỗi hứa hẹn với AngularJS
$scope.buy = function() {
paymentStrategy.buy()
.then(function(response) {
}
}
Phương thức mua này từ thanh toánChiến lược kích hoạt một số phương pháp cần được gọi tuần tự. Khi tất cả các phương thức bên trong purchase() được thực hiện, thì() cần phải được gọi.
Nó có lẽ là tầm thường nhưng tôi khá mới đến góc cạnh.
Hiện tại, mua(). Sau đó() được kích hoạt ngay sau phương thức init(). Tôi có cảm giác chúng ta cần phải đặt tất cả các phương pháp luận trong một loạt các lời hứa và áp dụng $ q.all().
Bất kỳ sự giúp đỡ hoặc gợi ý sẽ được đánh giá rất
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;
}
}
});
Làm tất cả các phương pháp của anh ấy về inappbilling như init, mua và tiêu thụPurchase return promise? – Chandermani
Âm thanh tốt nhưng bạn có thể làm rõ cách để làm điều đó không? –
Đó là một câu hỏi cho bạn Florent. Vấn đề với mã của bạn là bạn giải quyết lời hứa trên init callback và trên callbacks khác quá, nhưng bạn cần phải chờ cho tất cả các cuộc gọi kết thúc trước khi gọi giải quyết. – Chandermani