Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Express 我需要在res.send()之后调用next()吗?_Express - Fatal编程技术网

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

Express 我需要在res.send()之后调用next()吗?,express,Express,如果我调用了res.send(),但没有调用next(): 在此中间件之后的任何中间件都不会执行 如果此中间件不是最后一个中间件,那么请求将永远“挂起”,并且不会被垃圾收集,因为它仍在等待调用next() 以上是我试图证明我应该始终调用next(),这是真的吗?您不需要调用next()来完成发送响应res.send()或res.json()应结束对响应流的所有写入并发送响应 但是,如果要在发送响应后进行进一步处理,您完全可以调用next(),只需确保在调用res.send()后不会写入响应流即可

如果我调用了
res.send()
,但没有调用
next()

  • 在此中间件之后的任何中间件都不会执行
  • 如果此中间件不是最后一个中间件,那么请求将永远“挂起”,并且不会被垃圾收集,因为它仍在等待调用
    next()
  • 以上是我试图证明我应该始终调用
    next()
    ,这是真的吗?

    您不需要调用
    next()
    来完成发送响应
    res.send()
    res.json()
    应结束对响应流的所有写入并发送响应


    但是,如果要在发送响应后进行进一步处理,您完全可以调用
    next()
    ,只需确保在调用
    res.send()

    后不会写入响应流即可

  • 所有中间件都使用相同的
    请求和响应
    对象,因此如果通过任何中间件发送
    响应
    ,则将跳过所有下一个中间件
  • 您仍然可以通过调用
    next()执行进一步的操作但是你不能再做
    res.send()
    res.json()

  • 如果你喜欢这个答案,请接受它,谢谢。但是默认情况下,是express写东西吗?因为我没有额外的中间件,如果我调用它,我会得到一个错误。默认情况下,express有中间件,如果没有中间件处理请求,它将发送404错误。如果您放入中间件,并且不调用next(),那么您将不会得到404。