Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJs中的next()是什么?_Javascript_Node.js - Fatal编程技术网

Javascript NodeJs中的next()是什么?

Javascript NodeJs中的next()是什么?,javascript,node.js,Javascript,Node.js,我是来自Java背景的NodeJs新手,我正在尝试理解约定next()call的用法。 我浏览了以下帖子- 1. 2. 3. 我所能理解的是next()类似于回调,或者是在当前函数执行之后执行的下一个函数的引用, 还了解建议使用returnnext()而不是next()以避免要重新执行的函数 以下是链接之一的示例代码- app.get('/users/:id', function(req, res) { var user_id = req.params.id; if(us

我是来自Java背景的NodeJs新手,我正在尝试理解约定next()call的用法。

我浏览了以下帖子-
1.
2.
3.

我所能理解的是next()类似于回调,或者是在当前函数执行之后执行的下一个函数的引用,
还了解建议使用
returnnext()而不是
next()以避免要重新执行的函数

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

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

    if(user_id) {
      // do something
    } else {
      next(); // here comes middleware.
    }
});
我不明白的是,正在执行的函数没有第三个参数,
但是它确实调用了next()函数,这里的想法是什么?
是否仅在路由逻辑上使用此约定?
next()是回调吗?它是对要执行的下一个函数的引用吗?还是别的什么?

next()
不是nodejs的东西,而是
express
中间件功能。调用
next()
基本上移动到下一个中间件函数。是用于
节点的web应用程序

你可以读更多


另外,请通读您应该提供哪些信息。

Node.Js不知道下一步是什么。这是
express
框架使用的模式

As express有一个中间件的概念,它可以在每个请求中调用

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

更多关于
expressjs
和中间件的信息-

next()
实际上是中间件函数的回调参数,按惯例称为“next”。当您使用下一个参数(作为中间件函数的参数)并调用
next()
时,程序将移动到下一个中间件函数

但是express表示“注意上面对next()的调用。调用此函数将调用应用程序中的下一个中间件函数。next()函数不是Node.js或express API的一部分,而是传递给中间件函数的第三个参数。”

所以,我明白
next()
不是Nodejs的事。但是,我认为,
next()
不是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()
 }
})