我試圖從一個承諾傳遞一個結果(數組)到迭代這個結果的函數,爲每個項目獲取請求並創建一個新的對象與結果之前返回它。問題在於在解決承諾並填充之前返回對象。什麼是從多個承諾中返回填充對象的正確方法?角度循環承諾 - 函數返回空對象
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);
});
承諾對我來說仍然有點令人困惑,感謝您的幫助。 – neridaj