Я вижу много пользы 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, где ссылка на следующую выполняемую функцию дается обратному вызову, который запускается по завершении.
Смотрите, например, примеры кода здесь:
Давайте посмотрим на пример, который вы разместили:
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
этом примере нет ничего особенного в названии ; мы могли бы назвать это как угодно.
.next()
. Кажется, он спрашивает о next
методе объекта.
return next();
return callback()
вместоreturn next()
Это соглашение об именах, используемое при передаче обратных вызовов в ситуациях, которые требуют последовательного выполнения действий, например, сканирование каталога -> чтение данных файла -> что-то делать с данными. Это предпочтение глубокого вложения обратных вызовов. Первые три раздела следующей статьи в блоге Тима Касвелла HowToNode дают хороший обзор этого:
http://howtonode.org/control-flow
Также см. Раздел « Последовательные действия » второй части этой публикации:
Это в основном похоже на обратный вызов, который используется в express.js после выполнения и выполнения определенной части кода, вы можете использовать его, чтобы убедиться, что часть кода выполнена и что вы хотите сделать дальше, но всегда помнить, что вы можете только сделать один res.send
в каждом блоке REST ...
Таким образом, вы можете сделать что-то вроде этого в качестве простого next()
примера:
app.get("/", (req, res, next) => {
console.log("req:", req, "res:", res);
res.send(["data": "whatever"]);
next();
},(req, res) =>
console.log("it's all done!");
);
Это также очень полезно, когда вы хотите иметь промежуточное программное обеспечение в своем приложении ...
Чтобы загрузить функцию промежуточного программного обеспечения, вызовите app.use (), указав функцию промежуточного программного обеспечения. Например, следующий код загружает функцию промежуточного программного обеспечения myLogger перед маршрутом к корневому пути (/).
var express = require('express');
var app = express();
var myLogger = function (req, res, next) {
console.log('LOGGED');
next();
}
app.use(myLogger);
app.get('/', function (req, res) {
res.send('Hello World!');
})
app.listen(3000);