Я вижу много использования next
в node.js.
Что это такое, откуда оно взялось? Что оно делает? Могу ли я использовать его на стороне клиента?
Извините, например, здесь: http://dailyjs.com/2010/12/06/node-tutorial-5/
найдите функцию loadUser.
Я вижу много использования next
в node.js.
Что это такое, откуда оно взялось? Что оно делает? Могу ли я использовать его на стороне клиента?
Извините, например, здесь: http://dailyjs.com/2010/12/06/node-tutorial-5/
найдите функцию loadUser.
Это, по-видимому, соглашение об именах переменных в коде 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
; мы могли бы назвать это чем угодно.
Это соглашение об именах, используемое при передаче обратных вызовов в ситуациях, требующих последовательного выполнения действий, например. каталог сканирования → читать данные файла → делать что-то с данными. Это предпочтительнее глубоко вставлять обратные вызовы. Первые три раздела следующей статьи на блоге Тима Касуэлла HowToNode дают хороший обзор:
http://howtonode.org/control-flow
Также см. раздел "Последовательные действия" второй части этой публикации: