Javascript node.js next()

Я вижу много использования next в node.js.

Что это такое, откуда оно взялось? Что оно делает? Могу ли я использовать его на стороне клиента?

Извините, например, здесь: http://dailyjs.com/2010/12/06/node-tutorial-5/

найдите функцию loadUser.

Ответ 1

Это, по-видимому, соглашение об именах переменных в коде Node.js control-flow, где ссылка на следующую выполняемую функцию присваивается обратному вызову для ее начала, когда это делается.

См., например, примеры кода здесь:

Посмотрите пример, который вы опубликовали:

function loadUser(req, res, next) {
  if (req.session.user_id) {
    User.findById(req.session.user_id, function(user) {
      if (user) {
        req.currentUser = user;
        return next();
      } else {
        res.redirect('/sessions/new');
      }
    });
  } else {
    res.redirect('/sessions/new');
  }
}

app.get('/documents.:format?', loadUser, function(req, res) {
  // ...
});

Функция loadUser ожидает функцию в ее третьем аргументе, которая привязана к имени next. Это нормальный параметр функции. Он содержит ссылку на следующее действие для выполнения и вызывается один раз loadUser (если пользователь не может быть найден).

В этом примере нет ничего особенного в названии next; мы могли бы назвать это чем угодно.

Ответ 2

Это соглашение об именах, используемое при передаче обратных вызовов в ситуациях, требующих последовательного выполнения действий, например. каталог сканирования → читать данные файла → делать что-то с данными. Это предпочтительнее глубоко вставлять обратные вызовы. Первые три раздела следующей статьи на блоге Тима Касуэлла HowToNode дают хороший обзор:

http://howtonode.org/control-flow

Также см. раздел "Последовательные действия" второй части этой публикации:

http://howtonode.org/control-flow-part-ii