ThinkJS 支持将 Promise 赋值到模版中

1777次阅读  |  发布于5年以前

在使用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();
    }

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

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8