2016-04-15 6 views
0

Ich arbeite mit Ember Data und versuche, eine berechnete Eigenschaft zu erstellen, die der Summe aller Produkte in einem Geschäft mit ihren entsprechenden Rabatten entspricht. Ich bin neu, um die Verkettung zu versprechen, und ich glaube, dass dies ein Problem mit der Formatierung der Kette ist.Ember Promise-Kette gibt keine Summe zurück

export default DS.Model.extend({ 
title: DS.attr('string'), 
storeProducts: DS.hasMany('storeProduct',{async:true}), 
totalStoreValue:function(){ 
store.get('storeProducts').then(function(storeProducts){ //async call 1 
    return storeProducts.reduce(function(previousValue, storeProduct){ //begin sum 
    return storeProduct.get('product').then(function(product){ //async call 2 
     let price = product.get('price'); 
     let discount = storeProduct.get('discount'); 
     return previousValue + (price * discount); 
    }); 
    },0); 
}).then(function(result){ // 
    return result; 
}); 
}.property('[email protected]'), 

Jede Hilfe und Vorschläge wären willkommen.

Antwort

1

Verwenden Ember.RSVP.all Liste der Versprechen zu lösen, bevor die gesamte Berechnung:

store.get('storeProducts').then((storeProducts) => { //async call 1 
    return Ember.RSVP.all(storeProducts.map(storeProduct => { 
    return storeProduct.get('product').then((product) => { //async call 2 
     let price = product.get('price'); 
     let discount = storeProduct.get('discount'); 
     return price * discount; 
    }); 
    })); 
}).then(function(result){ // 
    return result.reduce((prev, curr) => { 
    return prev+curr; 
    }, 0); 
}); 
+0

Genau das, was ich brauchte. Danke mein Herr! –