promise then里面使用return的疑问?

发布于 2022-09-03 13:48:54 字数 1013 浏览 23 评论 0

//1
exports.login = function* (){
    let data = {config};
    let req = this.request.body;
    let loginname = req.loginname;
    let password = md5(req.password);

    yield Promise.resolve()
    .then(() => User.findOne({loginname: loginname}))
    .then((user) => {
        if(user && (password === user.password)){
            this.session.loginname = loginname;
            this.redirect('/');
        }else{
            data.errMsg = 'please check name & password';
            return co(this.render('login', data));
        }
    });
};

//2
exports.userInfo = function* (){
    let loginname = this.params.loginname;
    let data = {
            config,
            user: this.session.user
        };

    yield Promise.resolve()
    .then(() => User.findOne({loginname: loginname}))
    .then((user) => {data.userintro = user;})
    .then(() => co(this.render('user', data)))
};

这是使用koa编写的两端代码,为何同样是then里面写的函数,一个需要return,而另一个不需要return,也能渲染页面?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

唠甜嗑 2022-09-10 13:48:54

当只有一条语句例如 () => co(this.render('user', data)) 时,等价于

function (){ return co(this.render('login', data));}

当 ()=>{} {}内有多条语句,须加return

泅人 2022-09-10 13:48:54
() => someobj

等价于

function () {return someobj}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文