NodeJs 中的 next() 是什么?

Ani*_*aje 6 javascript node.js

我是来自 Java 背景的 NodeJs 新手,我试图了解约定next()调用的使用。

我已经浏览了以下帖子 -
1. javascript node.js next()
2. https://www.naeemrana.com/node-js/express-js-middleware-what-is-next/
3.何时在 Node.js 中使用 next() 并返回 next()

我可以理解的是 next() 类似于回调,或者可能是当前函数执行后要执行的下一个函数的引用,
也理解建议使用return next();而不是next();避免函数被重新执行。

以下是来自链接之一的示例代码 -

app.get('/users/:id', function(req, res) {
    var user_id = req.params.id;

    if(user_id) {
      // do something
    } else {
      next(); // here comes middleware.
    }
});
Run Code Online (Sandbox Code Playgroud)

我这里不明白的是正在执行的函数没有第三个参数,
但它确实调用了 next() 函数,这里的想法是什么?
此约定的使用仅用于路由逻辑吗?
next() 是回调吗?它是对下一个要执行的函数的引用吗?或者是其他东西?

fro*_*dev 5

Node.Js 不知道next。这是框架使用的模式express

由于express有一个中间件的概念,可以在每个进入它的请求中调用它。

如果当前的中间件函数没有结束请求-响应周期,则必须调用 next() 将控制权传递给下一个中间件函数。否则,请求将被挂起。

var app = express()

app.use(function (req, res, next) {
  if(condition_to_return_from_here){
    res.end(req.params.id)
  }else{
  console.log('Time:', Date.now())
  next()
 }
})
Run Code Online (Sandbox Code Playgroud)

更多关于expressjs中间件的信息 - https://expressjs.com/en/guide/using-middleware.html