[英]Ember- return the response from a nested promise in a closure action
使用以下模式,我可以使用閉包操作將保存操作的結果返回到組件的路由中。 這很好。
路線
actions: { submit: function(values) { var user = this.store.createRecord('user', values); return user.save(); }, }
零件
this.attrs.submit(values).then((response) => { //Handle success }).catch(error => { //Handle error });
在我的提交動作中,我想首先獲取用戶所屬的許可證對象,然后在保存之前在用戶對象上進行設置,如下所示。
問題是return user.save();
現在位於查詢操作的回調中,並且未從Submit操作中返回。
如何重組代碼,以便查詢許可證記錄,然后將user.save()
的結果返回到我的組件?
submit: function(values) { var user = this.store.createRecord('user', values); this.get('store').query('license', { filter: { code: values.licenseCode } }).then(function(licenses) { var license = licenses.get("firstObject"); user.set('license', license); return user.save(); }); },
無需重組。 then
方法已經實現了從回調中獲取結果的魔力 。 您只需要退還它給您的承諾:
submit: function(values) {
var user = this.store.createRecord('user', values);
return this.get('store').query('license', {
//^^^^^^
filter: {
code: values.licenseCode
}
}).then(function(licenses) {
// ^^^^^
var license = licenses.get("firstObject");
user.set('license', license);
return user.save();
// ^^^^^^
});
},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.