繁体   English   中英

具有2个承诺的Ember退货模式

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

model() {
 return Ember.RSVP.hash({
   columns: this.getColumns(),
   data: this.getData()
 });
}

现在,您可以在控制器中使用model.columnsmodel.datamodel.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM