Nodejs之间的差异' res.json(..)'并且'返回res.json(..)'

时间:2016-06-09 13:05:55

标签: javascript node.js syntax

我正在学习Nodejs而我并不完全理解这些回报。例如,建议在很多情况下返回next(),以确保在触发它后执行停止(Reference)。但是,对于像简单回复这样的情况,需要return,有什么区别和首选:

res.json({ message: 'Invalid access token' });

VS。

return res.json({ message: 'Invalid access token' });

1 个答案:

答案 0 :(得分:4)

返回用于停止执行。它通常用于根据条件进行某种形式的早期返回。

忘记返回通常会导致函数继续执行而不是返回。这些示例是典型的快速中间件示例。

如果中间件功能如下所示:

function doSomething(req, res, next){
    return res.json({ message: 'Invalid access token' });
}

结果行为与:

完全相同
function doSomething(req, res, next){
    res.json({ message: 'Invalid access token' });
}

但这种模式经常被实施:

function doSomething(req, res, next){
    if(token.isValid){
        return res.json({ message: 'Invalid access token' }); // return is very important here
    }
    next();
}

正如您在此处看到的那样,当返回被省略并且令牌是invlaid时,该函数将调用res.json()方法,但继续执行next()方法,这不是预期的行为。