不带参数的node.js next()中间件函数如何工作?

时间:2018-10-17 20:54:05

标签: javascript node.js express

中间件函数具有签名function (req, res, next),但是在Express中,next()调用不包含参数。怎么了请参阅以下示例 sample documentation

var express = require('express')
var app = express()

var myLogger = function (req, res, next) {
  console.log('LOGGED')
  next()
}

app.use(myLogger)

app.get('/', function (req, res) {
  res.send('Hello World!')
})

app.listen(3000)

当然可能是创建了一个包装函数,该函数在幕后绑定了参数,从而允许不带其他参数的调用,但是文档似乎表明next参数已被调用原样,这没有任何意义。

1 个答案:

答案 0 :(得分:1)

文档将第三个参数(通常命名为next)描述为

  

中间件函数的回调参数,按照惯例称为“ next”。

您可以认为它类似于大多数异步函数(无承诺)提供的常规node.js回调样式参数。当您的中间件功能完成其同步或异步工作时,它应调用next来向快递路由器指示其已完成执行。正如我们在其他node.js库和示例中经常看到的那样,该参数可以称为donecallback,但称为next则是为了向开发人员提供一个暗示,即中间件链将继续执行(在此之后可以调用其他中间件)。