NodeTime / Express请求被SetTimeout阻止?

时间:2018-04-25 02:54:10

标签: node.js express asynchronous

在下面的示例中,我在返回响应之前引入了10秒的人为延迟。

但是如果我在两个单独的选项卡中并行打开页面,第二个请求将被阻止,并且在第一个请求完成之前不会开始处理。换句话说,第二个'进入方法'将在第一个请求完全完成(10秒后)之后才会显示。

为什么第二个请求被阻止?我认为NodeJs不应该在异步代码运行时阻塞。

app.get('/', function (req, res) {
    console.log('entering method');

    setTimeout(() => {
        res.send('hello world');
    }, 10000);
});

1 个答案:

答案 0 :(得分:2)

许多浏览器限制同一服务器的并发请求数。这是浏览器限制,而不是Node.js。

尝试使用 //Your tab host id. yourTabHostId.setup() //Need to use var as we will reassign it for the second tab. //First tab is a tag and must be defined. var tabSpec = yourTabHostId.newTabSpec("First Tab") //Use the id for the first tab, for the content of your first tab. tabSpec.setContent(R.id.firstTab) tabSpec.setIndicator("First Tab") yourTabHostId.addTab(tabSpec) tabSpec = yourTabHostId.newTabSpec("Second Tab") //Use the id for your second tab, for the content of your second tab. tabSpec.setContent(R.id.secondTab) tabSpec.setIndicator("Second Tab") yourTabHostId.addTab(tabSpec) ,您会看到请求未被阻止。

curl

或者使用apache基准测试:

curl http://localhost:{port} &
curl http://localhost:{port} &