如何处理Node JS中的慢http请求?

时间:2017-06-18 13:38:01

标签: node.js loops events

我是nodejs的新手,我对事件循环感兴趣。但我有一个混乱的问题。

如果一个http请求需要处理10秒,那么所有其他请求是否必须等待慢速请求?

3 个答案:

答案 0 :(得分:0)

在NodeJS中,大多数异步任务(如http请求,数据库访问等)都将使用回调或承诺。这意味着事件循环可以自由地处理其他任务,直到调用回调或promise解析为止。

您可以在NodeJS文档中阅读有关事件循环here的更多信息。

答案 1 :(得分:0)

简答:不是,其他请求将并行工作。他们不会等待第一次请求的回复。

答案很长

  1. 您的代码提出了新请求。
  2. Node.js向待处理的回调列表添加新的回调。此回调将在服务器响应到达后运行。
  3. Node.js处理下一个代码或计时器或回调等等。
  4. 已经过了10秒钟。您的代码会收到答案并完成处理。

答案 2 :(得分:0)

事件循环只能在http请求中减慢,无论何时进行hudge同步操作,或者何时尝试将文件发送到客户端而不使用流api。每当您使用fs.readFile读取一个hudge文件时,它会暂停一切,直到读取整个文件,但使用流api会以块的形式发送文件。为避免减慢服务器速度,您应始终使用流api读取文件,例如使用fs.createReadStream而不是fs.readFile,具体取决于文件的大小