中间件函数具有签名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
参数已被调用原样,这没有任何意义。
答案 0 :(得分:1)
文档将第三个参数(通常命名为next
)描述为
中间件函数的回调参数,按照惯例称为“ next”。
您可以认为它类似于大多数异步函数(无承诺)提供的常规node.js回调样式参数。当您的中间件功能完成其同步或异步工作时,它应调用next
来向快递路由器指示其已完成执行。正如我们在其他node.js库和示例中经常看到的那样,该参数可以称为done
或callback
,但称为next
则是为了向开发人员提供一个暗示,即中间件链将继续执行(在此之后可以调用其他中间件)。