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

Javascript 谁在Express中间件中提供了next()函数?,javascript,node.js,express,middleware,Javascript,Node.js,Express,Middleware,我对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.s

我对
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()
将是什么样子?我不知道下一步做什么

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

中间件是一个可以访问请求对象(req)的函数 响应对象(res),以及 Express应用程序的请求-响应周期,通常用 名为next的变量

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


有关许多示例,请参见Express的

,它只是一个回调。当您执行
next
时,您告诉express您已经完成了,它应该继续使用下一个中间件,或者处理任何传入的错误。“谁在提供next()函数”Expressjs是。它在那里,以便您可以指示中间件何时完成执行。@KevinB那么您为什么不将回调传递给下一个中间件,比如
next(req,res,myNextFunc)?您为什么需要这样做?每个中间件都不应该关心下一个将调用什么中间件,或者调用所述下一个中间件的结果是什么。Express已经为下一个中间件提供了适当的req res和next参数。