Здесь у меня есть простое угловое приложение с двумя услугами, одно из которых получает баланс публичного адреса Dogecoin, а второй получает цену Dogecoin в Btc, из двух разных источников.Обработка данных из нескольких источников данных
Услуги:
angular.module('AppName', ['ngResource'])
.factory('DogeBalance', ['$resource', function ($resource) {
return $resource("https://dogechain.info/api/v1/address/balance/:address");
}])
.factory('DogePrice', ['$resource', function ($resource) {
return $resource("https://chain.so/api/v2/get_info/DOGE");
}])
и контроллер:
.controller('TwoController', function($scope, DogeBalance, DogePrice){
$scope.wallets = [
{ id: 0, type: 'doge', address: 'DT2rmMrutwzdZ8EXwzj4QFdcL6DtvGGkci'},
{ id: 1, type: 'doge', address: 'DMoonjyH1aHLZc1kksmikBUhjXromn1ZN4'}
];
var price = DogePrice.get();
$scope.totalBalance = parseFloat(0);
price.$promise.then(function(data) {
$scope.price = data.data.price;
//aggregate balance on all the addresses
for (i in $scope.wallets){
var balance = DogeBalance.get({address: $scope.wallets[i].address});
balance.$promise.then(function(data) {
$scope.totalBalance += parseFloat(data.balance);
$scope.totalValueBtc = $scope.totalBalance * $scope.price;
});
}
});
});
Мне нужно рассчитать совокупную стоимость в BTC от остатков всех dogecoin адресов из $scope.wallets
. Я обработал обещания из двух вызовов api вложенным образом, как вы можете видеть в коде контроллера.
Мой вопрос, если есть лучший способ сделать это обработку данных из нескольких обещаний?
Что делать, если у меня есть 5 обещаний до обработки данных, каждый из разных источников? Нужно ли мне помещать каждый из них в ответ на предыдущий вызов?