我有一個函數,它具有承諾數據和簡單數學值的組合數據。這裏的功能:AngularJS:具有承諾數據和非承諾數據的函數
_getTotalPrice = function() {
var price = 0;
// Simple Math data.
// Calculate price for channels first.
price = price + (num_channels - 5)*(4);
var themepacks = cart.themepacks;
if(themepacks) {
angular.forEach(themepacks, function(pack, index) {
// data coming from a service
channelFactory.getThemePack(pack).then(function(result) {
price = price + Number(result.packPriceAmt);
console.log("price", price);
});
});
}
console.log(" Total price", price);
return price;
};
在頁面加載的時間,Total price
和price
是不同的價值。這是因爲承諾解決後,price
被加載。在返回值之前如何等待承諾解決?我是否在這個功能中創造了另一個承諾?
做了你看看$ Q?請參閱http://www.codeducky.org/q-serial/或其他示例。 – Naveen
你不能*等待函數內返回一個值。它要麼返回'return'或'undefined'作爲隱式返回返回。返回一個返回值的承諾。 – estus