我正在学习Nodejs
而我并不完全理解这些回报。例如,建议在很多情况下返回next()
,以确保在触发它后执行停止(Reference)。但是,对于像简单回复这样的情况,需要return
,有什么区别和首选:
res.json({ message: 'Invalid access token' });
VS。
return res.json({ message: 'Invalid access token' });
答案 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()方法,这不是预期的行为。