Ich habe eine Aktion auf meinem Controller, der eine Service-Methode aufruft. Die Servicemethode ist eine Glutendatenabfrage. Ich muss eine Nachricht, die in dieser Ember-Daten-Nutzlast enthalten ist, zurück an die Steuerung senden (sie auf den Bildschirm drucken).ember: Versprechen für eine Controller-Aktion, die eine Service-Methode ruft
Ich habe eine harte Zeit herauszufinden, wie die Controller-Aktion (Funktion) warten auf die Service-Methode zu beenden.
Die Controller Aktion:
// controller action
processCoupon() {
// the service method I want to wait for the response for
let messageObject = DS.PromiseObject.create({
promise: this.get('cart').processCoupon()
});
// the message
messageObject.then(response => {
let promo_message = messageObject.get('promo_message');
if (promo_message.message && promo_message.alert) {
if (!promo_message.success) {
// show error message in alert with ember-cli-notifcations
} else {
// show success message in alert with ember-cli-notifcations
}
}
});
},
Methode in dem Service, den ich für die Antwort warten will:
// service method syncs cart info (containing promo) with the backend
// promo_message is in the response payload
processCoupon() {
return this.get('store').findRecord('cart', get(this, 'cartObj.id')).then(cart => {
cart.save().then(newCart => {
set(this, 'cartObj', newCart); // sets response to property on service
return newCart.get('promo_message');
});
});
},
die 'Antwort' in der Verheißung ist leer, und die MessageObject selbst hat kein Inhalt. Also mache ich hier etwas falsch (und es ist wahrscheinlich Missverständnisse Versprechen).
Ich verwirrte mit RSVP Versprechungen und war auch nicht gut dort. Was vermisse ich, ODER gibt es einen besseren Weg, dies zu tun?