Повторить промежуточное ПО - правильно вызывать следующее промежуточное ПО в стеке

Я использую 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(); передать управление следующему в стеке?

Я проверил и обе работаю - это оба куска кода успешно передают управление и возвращают данные, как ожидалось. Я хочу знать, есть ли разница между ними, и если мне нужно использовать один над другим.

Ответ 1

Нет никакой разницы. Я взглянул на источник 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!