2015-02-11 30 views
1

我对next()如何在Node.js和Express中间件中工作感到困惑。谁在Express中间件中提供next()函数?

还有一些关于中间件工程的其他问题,for example here,但我正在寻找不同的答案。

纠缠我的主要问题是是谁提供next()函数?

例如,在我的标准产生express应用程序,我给这个代码:

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

但谁调用这个函数,什么是它提供的next()的性质是什么?我怎么知道next()会是什么样子?我不知道next()会做什么。

+0

这只是一个回调。当你执行'next'时,你明确告诉你在这里完成了,它应该继续下一个中间件,或者处理任何传入的错误。 – 2015-02-11 21:46:45

+0

*“谁提供下一个()函数”* Expressjs是。它在那里,以便您可以指示中间件何时执行完毕。 – 2015-02-11 21:49:04

+0

@KevinB那么为什么你不通过下一个中间件旁边的回调,比如'next(req,res,myNextFunc);'? – CodyBugstein 2015-02-11 21:59:28

回答

2

Express应用程序本质上是一系列中间件调用。

中间件是与访问请求对象(REQ),则 响应对象(RES),并且行中的下一个中间件在Express应用程序的 请求响应周期,通过 可变通常表示一个函数命名下一个。

如上所述,Expressjs提供了下一个回调函数。接下来只是调用流中下一个中间件的一种方法。

对于很多例子,请参阅Express的Using middleware