NodeJS / SailsJS中next()的具体功能是什么?

时间:2014-11-19 18:58:16

标签: javascript node.js sails.js

我一直在观看SailsJS教程,对于一些用户身份验证我看到该函数已应用,但我没有得到next();的具体功能

1 个答案:

答案 0 :(得分:4)

接下来的目的是继续处理请求 - 这允许中间件等工作。

这是一个例子。

想象一下,你有一个简单的Express.js应用程序,如下所示:

var app = express();
app.get('/', function(req, res) {
  res.send('hi!');
});

app.get('/dashboard', function(req, res) {
  res.send('there!');
});

以上应用程序有2条路线,每条路线都有特定的功能。

现在,如果我们想要创建一个特殊的函数,在执行每个请求之前将hello world打印到控制台,该怎么办?要做到这一点,我们需要修改上面的两个路由,或者像这样创建一个中间件:

var app = express();

app.use(function(req, res, next) {
  console.log('hello, world!');
  next();  // continue processing
});

app.get('/', function(req, res) {
  res.send('hi!');
});

app.get('/dashboard', function(req, res) {
  res.send('there!');
});

现在,发生的情况是,对于每个请求,我们在上面定义的函数将被调用到任何路由代码之前,并且一旦它调用next(),这意味着我们将运行我们的路线代码。

漂亮,对吧?

在基本级别,next对象只是要执行的“下一个函数”,所以当你说next()时,你告诉express要继续处理用户请求。 / p>