结论:其实就是当有请求时,会先处理中间件,等到各种中间件处理完毕,最后才进入路由的方法体。
我们可以使用use来注册中间件,然后中间件里使用next()来帮助我们执行完该中间件后执行下一个中间件,如果没有使用next(),那么请求将会被挂起,并且后边的中间件得不到被执行的机会.
注意:中间件的注册需要放在route handle的前面

    var app = express()

    app.use(function(req,res,next){
        console.log(req,res)
        next()
    })

    app.get('/',function(req,res,next){
        conole.log("hello world")
    })

为什么中间件里要使用next()来帮助我们进行执行下一个中间件呢?为什么不直接像普通函数那样直接调用,一个完成接下一个?
那是因为其实middlewares里可能会有执行异步的操作,所以并非是到达函数底部就代表middlewares执行的完成。由于express并不知道middlewares什么时候完成,所以必须要等到next()函数被显性呼叫后,才会进入下一个middlewares处理


CentOs
1 声望0 粉丝