我对express.js非常陌生,正在阅读文档。据我所知,快速中间件中的 next 参数的目的是为给定的路由调用后续的中间件函数。我假设 next() 是 Express API 中定义的函数。但是,该文档具体说明了以下内容:
Notice the call above to next(). Calling this function invokes the next middleware function in the app. The next() function is not a part of the Node.js or Express API, but is the third argument that is passed to the middleware function. The next() function could be named anything, but by convention it is always named “next”. To avoid confusion, always use this convention.
让我对 next 感到困惑的是,它似乎没有在任何地方定义,因此声称它不是 API 一部分的说法很奇怪。我唯一能想到的是,express 自动将 next 重写为幕后的后续中间件函数(将其作为第三个参数传递给第一个中间件回调函数)。
我的问题本质上是这样的——我知道 next 做什么,但到底是吗吗?
最佳答案
next
参数是 Express 提供的回调。它是一个带有一个参数的函数,该参数指示是否应该继续执行下一个中间件函数。
如果将非 null/非未定义值传递给 next
,则表示发生错误并且不会进行进一步处理。
如果您未传递任何参数或 null
,则 Express 会继续执行下一步操作。
为了回答您的问题,next
是 Express 提供的回调函数,用于控制 Express 何时应移至下一步。它的实现是 Express 内部的。
请注意,如果您的中间件正在完成请求(例如通过调用 res.json("done!")
),那么您不需要在以下位置调用 next
一切都是因为没有什么可做的。
正如您所指出的,此时函数的名称是本地的,可以调用任何名称,但通常称为 next
。
关于javascript - express.js "next()"参数的确切性质,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59914522/