0
在這裏,我有一個簡單的Angular應用程序,它有兩個服務,一個從兩個不同的來源獲得一個狗舍幣公共地址的餘額,另一個在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;
});
}
});
});
我需要從$scope.wallets
計算BTC所有多吉幣地址的餘額的合計值。我以嵌套的方式處理來自兩個API調用的承諾,就像您在控制器代碼中看到的一樣。
我的問題,如果有一個更好的辦法做到從多個承諾這個數據處理?
如果我有5個承諾在數據處理之前解決,每個來自不同的來源?我是否需要將他們中的每一個放入前一個的承諾回調中?