Node JS Asynchronous requestHandler(用于路由)

时间:2012-07-06 01:27:49

标签: node.js asynchronous

我正在经历The Node Beginners book并对同步方式"怀疑请求节点js处理。我的意思是假设我的网站有2个页面开始上传(按照教程),我向2个页面发出并发请求,然后请求被串行处理(比如首先启动将被提取,然后上传将被提取)。如果我的网站每秒收到100个请求(我只运行一个节点进程),所有这些请求将被串行处理。因此对路由器来说没有意义 调用setTimeOut中的所有requestHandlers(类似于setTimeOut(handler(response),0))?这样路由器的任务将仅限于调用处理程序并转移到下一个请求等待。当然,页面需要时间来加载,具体取决于它的大小和操作,但至少可以利用时间来完成重要的工作,而不是仅仅等待其他页面。

我也理解该节点运行一个进程。但它确实运行多个线程吗?

1 个答案:

答案 0 :(得分:1)

要回答您的最后一个问题,您在JavaScript中为Node程序编写的所有代码都在一个线程中运行;异步I / O任务由libuv抽象出来。

我认为你没有以足够精细的方式考虑你的两个要求;你说,

  

首先启动,然后上传

但实际上,Web请求和响应由各种IO任务组成,而不仅仅是您在JavaScript程序中执行的处理。例如,当数据流通过套接字用于“启动”处理程序时,数据也可以流式传输到程序中以用于“上传”处理程序。