[英]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.