javascript - 如何解决node.js中阻塞对一个URI的请求的问题?

标签 javascript node.js web blocking

我想解决同一URI的阻塞请求的问题。 我正在使用 Express 来路由请求。

app.get('/task', function(req, res){
  console.log("geted");
  setTimeout(function(){
    res.json({"status":"ok"});
    res.end();
  },10000);    
});

如果我对这个 uri [localhost/task] 发出两个连续请求,那么第二个“geted”仅在第一个请求执行后出现。第一次请求后 10 秒。

geted
GET /task 200 10016ms - 20b
geted
GET /task 200 10005ms - 20b

对其他 URI 的请求未锁定(感谢 Express),尽管到目前为止,尚未发送两个相同的请求。

问题是为什么以及如何避免/解决这个问题?

nodejs v10.26.0 express v3.4.8

最佳答案

这不是 Node 问题,这是由您的浏览器引起的。

如果您在一个浏览器实例中发送两个相同的请求(例如,在同一浏览器中打开两个选项卡),那么在第一个请求完成之前,您的浏览器不会发送第二个请求。

尝试打开两个不同的浏览器,例如一个 Chrome 和一个 Firefox,并从每个浏览器发送一次请求。我打赌您会看到它的行为符合您的预期。

关于javascript - 如何解决node.js中阻塞对一个URI的请求的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22920858/

相关文章:

javascript - 为什么 Internet Explorer 向后显示我的 JavaScript 分页?

php - 将用户的输入存储到数据库中

node.js - 更新 MongoDb 子文档中数组中的特定文档

Python:Beautifulsoup 返回 None 或 [ ]

javascript - 执行 JavaScript 方法,当 p :outputLabel is rendered

javascript - 如何将参数从 Controller 传递到服务

node.js - 每当我尝试将服务器添加到用户模型时,Sequelize 不会在直通/联结表中添加记录

node.js - 具有平均堆栈的 Node 快速上传文件

apache - 在 Apache 服务器上安装了 SSL,页面没有响应

python - 从 ChoiceField 传递选择不接受