cra*_*s84 1 asynchronous node.js express
在下面的示例中,我在返回响应之前引入了 10 秒的人为延迟。
但是,如果我在两个单独的选项卡中并行打开页面,则第二个请求将被阻止,并且在第一个请求完成之前不会开始处理。换句话说,直到第一个请求完全完成后(10 秒后)才会显示第二个“输入方法”。
为什么第二个请求被阻止?我认为 NodeJs 不应该在异步代码运行时阻塞。
app.get('/', function (req, res) {
console.log('entering method');
setTimeout(() => {
res.send('hello world');
}, 10000);
});
Run Code Online (Sandbox Code Playgroud)
许多浏览器限制对同一服务器的并发请求数。这是浏览器限制,而不是 Node.js 限制。
尝试使用curl,您会看到请求没有被阻止。
curl http://localhost:{port} &
curl http://localhost:{port} &
Run Code Online (Sandbox Code Playgroud)
或者使用 apache 基准测试:
ab -n 10 -c 2 http://localhost:{port}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
380 次 |
| 最近记录: |