提问者:小点点

res. end()必须在node.js中快速调用吗?


我有几个Express应用程序,我看到在某些模块中,res. end()在请求处理程序的末尾调用(在res.sendres.json之后),而在其他模块中,它不被调用。

例如:

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

或:

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

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


共3个答案

匿名用户

您的问题的答案是否定的。如果您调用res. send(),则不必调用res.end()res.send()为您调用res.end()

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

  //. . .
  // respond
  this.end(head ? null : body);
  return this;
}

匿名用户

您必须调用end()函数的一个示例是当您将缓冲区作为文件发送以下载时。

res.write(buffer);
res.end();

匿名用户

res. end([data][,编码])

结束响应过程。这个方法实际上来自Node core,特别是http. ServerResponse的response.end()方法。用于在没有任何数据的情况下快速结束响应。

如果您需要使用数据响应,请改用res. send()和res.json()等方法。