[英]Ember return model with 2 promises
我有一个路由类,在模板中,我使用了一个自定义的网格组件
{{my-grid params=this.gridParams elementId='myGrid'}}
现在,要进行2次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调用。
我该如何使其适用于我的情况?
UPDATE
我常见的单个POST请求
doPostReq: function(postData, requestUrl){
var promise = new Ember.RSVP.Promise(function(resolve, reject) {
return $.ajax({
}).success(resolve).error(reject);
})
return promise;
},
如果您有两个或多个诺言,并且想知道它们何时全部解决,请使用RSVP.hash或RSVP.all
model() {
return Ember.RSVP.hash({
columns: this.getColumns(),
data: this.getData()
});
}
现在,您可以在控制器中使用model.columns
和model.data
等model.columns
解决的model.data
UPDATE
如果要串行执行(一个答应一个接一个),则可以执行以下操作:
model() {
let data;
return this.getData().then(function(d){
data = d;
return this.getColumns();
}).then(function(columns){
return { columns, data };
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.