首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么setTimeout会屏蔽我的Node.js应用程序?

为什么setTimeout会屏蔽我的Node.js应用程序?
EN

Stack Overflow用户
提问于 2016-03-06 18:51:13
回答 1查看 917关注 0票数 15

以Http服务器的典型节点js为例,我在其中添加了5秒的延迟,以模拟在其他地方发生的一些异步工作:

代码语言:javascript
复制
const http = require('http');

const hostname = '127.0.0.1';
const port = 8080;

http.createServer((req, res) => {
  setTimeout(()=>{
      res.writeHead(200, { 'Content-Type': 'text/plain' });
      res.end('Hello World\n');
  },5000);
}).listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

我期望的是,当我打开5个标签时,假设每个标签之间有半秒的延迟,服务器应该或多或少地“响应”每个标签的时间:

代码语言:javascript
复制
t=0s - I open first tab
t=0.5s - I open second tab
t=1s - I open third tab
...
t=5s - First tab stops loading, server has replied
t=5.5s - Second tab stops loading, server has replied
t=6s - Third tab stops loading, server has replied
t=6.5s - Fourth tab stops loading, server has replied
t=7s - Fifth tab stops loading, server has replied

然而,我看到的行为如下:

代码语言:javascript
复制
t=0s - I open first tab
t=0.5s - I open second tab
t=1s - I open third tab
...
t=5s - First tab stops loading, server has replied
t=10s - Second tab stops loading, server has replied
t=15s - Third tab stops loading, server has replied
t=20s - Fourth tab stops loading, server has replied
t=25s - Fifth tab stops loading, server has replied

好像后续的请求直到第一个请求完成后才开始运行。我是不是漏掉了什么?我认为Node JS的全部要点是能够从单个线程运行异步taks?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35825965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档