我需要在res.send()之后调用next()吗?

gol*_*pot 14 express

如果我打电话res.send(),但没有打电话next():

  1. 此中间件之后的任何中间件都不会被执行.
  2. 如果这个中间件不是最后的中间件,那么请求将永远"挂起",并且不会被垃圾收集,因为它仍在等待next()被调用.

以上是我试图争辩说我应该经常打电话next(),这是真的吗?

Ale*_*lls 20

无需致电 next()完成发送响应.res.send()或者res.json()应该结束所有写入响应流并发送响应.

但是,如果您想在发送响应后进行进一步处理,则绝对可以调用 next(),只需确保在调用后不写入响应流res.send().


小智 6

简单地

  1. 所有中间件都使用相同的request and response对象,因此如果您response通过任何中间件发送所有接下来的中间件将被跳过
  2. 您仍然可以通过调用执行进一步的操作,next();但您不能执行res.send()res.json()进一步