thinkjs支持将promise assign到模版中

在使用thinkjs开发实际的项目中,经常我们要从很多地方拉取数据,如:多个表、其他服务等。我们大致要使用如下的方式来开发:

listAction: function(){
 var self = this;
 var p1 = D('Group').where({id: id}).select().then(function(data){
 self.assign('group_list', data);
 })
 var p2 = D('Article').select().then(function(data){
 self.assign('article_list', data)
 })
 //需要使用Promise.all等所有的promise都完成后才能调用display渲染模版
 return Promise.all([p1, p2, ...]).then(function(){
 return self.display();
 })
}

当然上面assign的代码也可以放到Promise.all的then里统一assign,但这样还是不可避免要的使用Promise.all。

为了简化这一开发方式,thinkjs从1.0.7版本开始支持将promise直接assign到模版中。那我们看下上面的代码可以简化为什么样?

listAction: function(){
 var p1 = D('Group').where({id: id}).select();
 var p2 = D('Article').select();
 this.assign({
 group_list: p1,
 article_list: p2
 })
 return this.display();
}

是不是感觉简单很多了呢?小伙伴们赶紧升级试用吧。

w3ctech微信

扫码关注w3ctech微信公众号

共收到3条回复

  • 能这么用真是太好了,测过了,漂亮

    回复此楼
  • 赞,再也不用写一大坨 Promise.all 了~

    回复此楼
  • @江湖人称老六
    请教一下,现在版本的js能放到百度云环境吗?为什么我的发布上去后只能访问首页,其他的页面都不能访问 提示 404

    @江湖人称老六 请教大神给予帮助 我的qq为 843799293

    回复此楼

AltStyle によって変換されたページ (->オリジナル) /