Ich habe eine Funktion, die Daten hat, die eine Kombination von Versprechen Daten und einfache mathematische Werte ist. Hier ist die Funktion:AngularJS: Funktion mit Versprechen und nicht versprechen Daten
_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;
};
Zum Zeitpunkt der Seite zu laden, wird der Wert von Total price
und price
unterscheidet. Dies liegt daran, dass die price
geladen wird, nachdem das Versprechen gelöst wurde. Wie kann ich warten, bis das Versprechen abgeschlossen ist, bevor der Wert zurückgegeben wird? Erstelle ich ein anderes Versprechen innerhalb dieser Funktion?
Haben Sie einen Blick auf $ q hatte? Siehe http://www.codeducky.org/q-serial/ oder ein anderes Beispiel. – Naveen
Sie können * nicht warten *, um einen Wert innerhalb der Funktion zurückzugeben. Es wird entweder mit "return" zurückgegeben oder "undefined" wird als implizite Rückgabe zurückgegeben. Gibt ein Versprechen zurück, das einen Wert zurückgibt. – estus