我對調用服務方法的控制器有一個操作。該服務方法是一個燼數據查詢。我需要將包含在該餘燼數據有效載荷中的消息返回給控制器(將其打印到屏幕上)。ember:承諾一個調用服務方法的控制器操作
我很難弄清楚如何讓控制器動作(功能)「等待」服務方法完成。
控制器動作:在我要等待該響應的服務
// 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
}
}
});
},
方法:
// 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');
});
});
},
中承諾的「反應」是空的,而MessageObject本身具有無內容。所以我在這裏做錯了事(這可能會誤解承諾)。
我搞砸了RSVP的承諾,並沒有做好。我錯過了什麼,還是有更好的方法來做到這一點?