在下面的示例中,我在返回响应之前引入了10秒的人为延迟。
但是如果我在两个单独的选项卡中并行打开页面,第二个请求将被阻止,并且在第一个请求完成之前不会开始处理。换句话说,第二个'进入方法'将在第一个请求完全完成(10秒后)之后才会显示。
为什么第二个请求被阻止?我认为NodeJs不应该在异步代码运行时阻塞。
app.get('/', function (req, res) {
console.log('entering method');
setTimeout(() => {
res.send('hello world');
}, 10000);
});
答案 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} &