谁在Express中间件中提供next()函数?

我很困惑next()如何在Node.js和Express中间件中工作。

还有一些关于中间件工作的其他问题, 例如这里 ,但我正在寻找一个不同的答案。

困扰我的主要问题是谁在提供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()是做什么的。

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

中间件是在Express应用程序的请求 – 响应周期中访问请求对象(req),响应对象(res)和下一个中间件的函数,通常由名为next的variables表示。

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

有关许多示例,请参阅Express的使用中间件