javascript - express.js "next()"参数的确切性质

标签 javascript node.js express

我对express.js非常陌生,正在阅读文档。据我所知,快速中间件中的 next 参数的目的是为给定的路由调用后续的中间件函数。我假设 next() 是 Express API 中定义的函数。但是,该文档具体说明了以下内容: enter image description here

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/

相关文章:

mysql - 使用nodejs将excel表上传到MySQL时如何忽略第一行?

使用 HTTP-AUTH 的 Node.js Express

javascript - 生成器函数如何在 Javascript 中工作?

javascript - 如何突出显示 DOM Range 对象的文本?

javascript - 没有带有 createElement/appendChild 的自动化 tbody?

node.js - 阻塞代码是否总是使用 return 语句,而非阻塞代码总是使用回调?

javascript - 在嵌套类对象上定义属性

javascript - 如何从 MongoDB 集合中创建并行和顺序作业队列(FIFO)?

node.js - 使用 Mocha 测试 locomotive.js

node.js - 用于查询子实体的node-restful GET查询字符串