我正在使用Restify和Nodejs,我对将控制权返回到堆栈中的下一个中间件的正确方法有疑问。当我说“堆栈中的下一个中间件”时,我希望我使用正确的短语。
基本上,我的代码如下所示:
//server is the server created using Restify
server.use(function (req, res, next) {
//if some checks are a success
return next();
});
现在,我想知道的是代码应该是return next();
还是应该只是next();
来将控件传递给堆栈中的下一个?
我检查了两个工作 - 这两段代码都会成功传递控制并按预期返回数据 - 我想知道的是两者之间是否有差异,如果我需要使用另一个。
答案 0 :(得分:18)
没有区别。我看了一下Restify源代码,它似乎根本没有对中间件的返回值做任何事情。
使用return next()
的原因纯粹是为了方便:
// using this...
if (someCondition) {
return next();
}
res.send(...);
// instead of...
if (someCondition) {
next();
} else {
res.send(...);
};
这可能有助于防止这样的错误:
if (someCondition)
next();
res.send(...); // !!! oops! we already called the next middleware *and* we're
// sending a response ourselves!