我想解决同一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/