10

我正在将 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();将控制权传递给堆栈中的下一个?

我检查并且两者都工作 - 这两个代码都将成功通过控制并按预期返回数据 - 我想知道两者之间是否存在差异以及我是否需要使用另一个。

4

1 回答 1

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!
于 2013-05-14T13:36:45.847 回答