【发布时间】:2015-02-11 21:42:04
【问题描述】:
我对 next() 在 Node.js 和 Express 中间件中的工作方式感到困惑。
还有一些关于中间件工作的其他问题,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() 做什么。
【问题讨论】:
-
这只是一个回调。当你执行
next时,你告诉 express 你已经完成了,它应该继续下一个中间件,或者处理任何传入的错误。 -
“谁在提供 next() 函数” Expressjs 是。它在那里,以便您可以指示该中间件何时执行完毕。
-
@KevinB 那你为什么不通过下一个中间件旁边的回调,比如
next(req, res, myNextFunc);? -
您为什么需要这样做?每个中间件不应该关心接下来会调用什么中间件或调用所说的下一个中间件的结果是什么。 Express 已经为下一个中间件提供了适当的 req res 和 next 参数。
标签: javascript node.js express middleware