【发布时间】:2018-07-12 16:15:24
【问题描述】:
我想知道 nodejs 是否需要在为下一个请求提供服务之前完成对当前请求的返回响应。我在其他任何地方都找不到我的问题的答案。
提前致谢。
【问题讨论】:
-
不,它使用回调处理下一个。
-
@eduPeeth 可能有多种情况,在我已经解释过的其中一种情况下会发生相关情况。
我想知道 nodejs 是否需要在为下一个请求提供服务之前完成对当前请求的返回响应。我在其他任何地方都找不到我的问题的答案。
提前致谢。
【问题讨论】:
Nodejs 被称为单线程,因为所有请求都由一个线程处理(我们称这个线程为 main)。
假设您的两个请求来自服务器: 请求 1 -> 必须读取一个大文件(假设大约 100MB)然后解析结果然后返回值 请求 2 -> 获取 2+2 的结果,然后返回响应
从请求中我们可以看出,请求 1 将花费大量时间,而请求 2 则不会。
如果你写的代码正确,即使用异步编程Request1将由另一个线程而不是main处理,那么如果Request2来了,它将在Request1之前得到响应。
如果没有编写正确的代码,Request2 将不会被处理,直到 Request1 的处理完成。
我希望这能回答你的问题。
【讨论】: