I'm trying to pass a result (array) from a promise to a function that iterates over this result, making a get request for each item and creating a new object with the results before returning it. The problem is that the object is being returned before the promises are resolved and populate it. What is the correct way to return a populated object from multiple promises?
function getPackageDetails(packages) {
var detailedPackages = {};
angular.forEach(packages, function(p) {
vsmsPackageFactory.getPackage(p.id)
.then(function(response) {
var subsystem = response.data.packageManifest.subsystem;
var partNumber = response.data.packageManifest.resultConfig.partNumber;
var packageName = response.data.packageMetaData.packageName;
if(detailedPackages[subsystem] === undefined) {
detailedPackages[subsystem] = {};
}
if(detailedPackages[subsystem][partNumber] === undefined) {
detailedPackages[subsystem][partNumber] = {};
}
detailedPackages[subsystem][partNumber][packageName] = response.data;
});
});
return detailedPackages; // returns before all promises resolved
}
vsmsCampaignFactory.getCampaignPackages(queryString)
.then(function(response) {
vm.packageList = getPackageDetails(response.results);
});