如何使用 jquery.when 和 ember 数据承诺

How to use jquery.when with ember data promises

我正在尝试在多个 ember 模型完成其保存方法时触发回调。

var promises = [];
modellist.forEach(function(mymodel){
    promises.push(mymodel.save())
}
$.when.apply(null, promises).done(function () {
    console.log('finished promises');
}
console.log('finished method');

立即执行应用函数。

问题:以下哪项是正确的?

我找到了解决方案:

  • Ember.RSVP.all(承诺).then(函数(){...})

这在文档中不容易找到:-(

我是 RSVP.hash 的忠实粉丝,因为它允许对象,而 RSVP.all 使用数组。

如果你想在常规代码中使用它来保存多个模型。

actions: {
   doSomething() {
     Ember.RSVP.hash({
       model1Saved: this.get('model1').save(),
       model2Saved: this.get('model2').save(),
    }).then((hash) => { 
      /* hash.model1Saved and hash.model2Saved are available here */ 
    }, (error) => { 
     /* Deal with error */ 
    });
   }
} 

这很好,因为您不必弄乱数组索引。

返回路线模型时也是如此

model() {
return Ember.RSVP.hash({
  posts: this.store.findAll('post'),
  tags: this.store.findAll('tag'),
  categories: this.store.findAll('category'),
});
},

然后在setupController方法中你可以:

setupController(controller, model) {
  this._super(controller, model.posts);
  controller.set('tags', model.tags);
  controller.set('category', model.categories);
}