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

时间:2016-11-20 05:50:11

标签: express

如果我拨打了res.send(),但没有拨打next()

  1. 此中间件之后的任何中间件都不会被执行。
  2. 如果这个中间件不是最后一个中间件,那么请求将会#34;挂起"永远,并且不会被垃圾收集,因为它仍在等待next()被调用。
  3. 以上是我试图争辩说我应该总是致电next(),这是真的吗?

2 个答案:

答案 0 :(得分:19)

不需要致电 next()完成发送回复。 res.send()res.json()应该结束对响应流的所有写入并发送响应。

但是,如果您想在发送回复后进行进一步处理,那么你绝对可以致电 next(),只需确保在您之后不要写入响应流致电res.send()

答案 1 :(得分:3)

简单

  1. 所有中间件都使用相同的$date1=date('d/m/y'); $tempArr=explode('_', '31_12_11'); $date2 = date("d/m/y", mktime(0, 0, 0, $tempArr[1], $tempArr[0], $tempArr[2])); 对象,因此,如果您通过任何中间件发送request and response,则所有下一个中间件都将被跳过
  2. 您仍然可以通过调用response来执行进一步的操作,但不能进一步执行next();res.send()