为什么必须res.end()用node.js快速调用?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (116)

我有几个Express应用程序,并且我发现在某些模块中,res.end()在请求处理程序的末尾调用(在res.send或之后res.json),而在另一些模块中,它不被调用。

例如:

app.get('/test', function(req, res) {
    res.send('Test', 200);
});

要么:

app.get('/test', function(req, res) {
    res.send('Test', 200);
    res.end();
});

这两种情况都有效,但是当我运行许多请求时,我担心泄漏或者耗尽文件描述符或类似的东西。哪一个“更正确”?

提问于
用户回答回答于

你的问题的答案是否定的。res.end()如果你打电话,你不必打电话res.send()res.send()呼唤res.end()你。

取自/lib/response.js,这里是res.send()函数的结尾:

  //. . .
  // respond
  this.end(head ? null : body);
  return this;
}
用户回答回答于

res.end([data] [, encoding])

结束响应过程。这个方法实际上来自Node核心,特别是response.end() method of http.ServerResponse. 使用来快速结束没有任何数据的响应。

如果需要回复数据,请使用诸如 res.send() and res.json().

扫码关注云+社区

领取腾讯云代金券