我有一个路由类,在模板中,我使用自定义网格组件
{{my-grid params=this.gridParams elementId='myGrid'}}
现在,有两个AJAX调用来填充网格;
1. /getColumns (this column header data response is used to set some properties on my controller)
2. /getData (this body response is actually used to populate the grid with actual data and is actually computed to gridParams)
我正在阅读指南"路由器暂停承诺" https://guides.emberjs.com/v2.2.0/routing/asynchronous-routing/
但是,这是针对单个promise / ajax调用的。
我怎样才能让它在我的案例中发挥作用?
更新
我常见的单一POST请求
doPostReq: function(postData, requestUrl){
var promise = new Ember.RSVP.Promise(function(resolve, reject) {
return $.ajax({
}).success(resolve).error(reject);
})
return promise;
},
答案 0 :(得分:3)
如果您有两个或两个以上的承诺,并想知道他们何时解决使用RSVP.hash或RSVP.all
model() {
return Ember.RSVP.hash({
columns: this.getColumns(),
data: this.getData()
});
}
现在,您可以在控制器中使用已解决的承诺,例如model.columns
和model.data
<强>更新强>
如果你想要串行执行(一个接一个的承诺),你可以这样做:
model() {
let data;
return this.getData().then(function(d){
data = d;
return this.getColumns();
}).then(function(columns){
return { columns, data };
});
}