Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
Node.js 如何在NodeJS中处理慢速http请求?_Node.js_Loops_Events - Fatal编程技术网

Node.js 如何在NodeJS中处理慢速http请求?

Node.js 如何在NodeJS中处理慢速http请求?,node.js,loops,events,Node.js,Loops,Events,我是nodejs新手,对事件循环感兴趣。但我有一个困惑的问题 如果一个http请求需要处理10秒,如果所有其他请求必须等待慢速请求?在NodeJS中,大多数异步任务(如http请求、db访问等)将使用回调或承诺。这意味着事件循环可以自由处理其他任务,直到调用回调或承诺解析为止 您可以在NodeJS文档中阅读有关事件循环的更多信息。在NodeJS中,大多数异步任务(如http请求、db访问等)将使用回调或承诺。这意味着事件循环可以自由处理其他任务,直到调用回调或承诺解析为止 您可以在NodeJS文

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


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

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


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

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


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

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

长答案

  • 您的代码发出一个新请求
  • Node.js将新回调添加到挂起回调列表中。此回调将在服务器响应到达后运行
  • Node.js处理下一个代码、计时器或回调等
  • 10秒过去了。您的代码接收答案并完成处理

  • 简短回答:不是,其他请求将并行工作。他们不会等待第一个请求的响应

    长答案

  • 您的代码发出一个新请求
  • Node.js将新回调添加到挂起回调列表中。此回调将在服务器响应到达后运行
  • Node.js处理下一个代码、计时器或回调等
  • 10秒过去了。您的代码接收答案并完成处理

  • 只有在http请求中,当您执行hudge同步操作或尝试在不使用流api的情况下向客户端发送文件时,才能减慢事件循环。每当您使用
    fs.readFile
    读取hudge文件时,它会暂停所有内容,直到读取整个文件,但使用流api会以块的形式发送文件。为了避免服务器速度减慢,您应该始终使用流api读取文件,例如使用
    fs.createReadStream
    而不是
    fs.readFile
    ,具体取决于文件的大小事件循环只能在http请求中减慢,当您执行hudge同步操作时,或者当您尝试在不使用stream api的情况下向客户端发送文件时。每当您使用
    fs.readFile
    读取hudge文件时,它会暂停所有内容,直到读取整个文件,但使用流api会以块的形式发送文件。为了避免降低服务器速度,您应该始终使用流api读取文件,例如,根据文件大小,使用
    fs.createReadStream
    而不是
    fs.readFile