簡體   English   中英

Ember-在閉包操作中返回嵌套諾言的響應

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM