如何解决如何避免节点表达被提取调用阻塞
我已经使用setInterval
在节点表示路由上模拟了一个耗时的异步操作。 setInterval
处于等待状态时,node-express没有响应其他客户端的请求。
怎么做才能防止路由阻塞?
这是我使用的模拟:
我打开了两个客户端,并尝试同时发送来自两个客户端的请求。测试是在本地主机上完成的。
我已经对其进行了一次又一次的测试,并且第二个客户端只有在所有十个第一个客户端请求都得到响应之后才从服务器获得响应。
客户
:<button onclick='getManyData()'>Get Data </button>
<script>
function getManyData(){
for(let i=0; i<10;i++){
getData()
}
}
function getData(){
fetch('/api/req1')
.then(res=>res.json())
.then(data=>{
console.log(data)
})
}
</script>
服务器:
const express = require('express');
const app = express();
app.use(express.static('public'))
app.get('/api/req1',(req,res) => {
setTimeout(()=>{
res.send({ ok: true })
},500)
})
app.listen(3000,() => { console.log('listen on port 3000') })
更新:
我发现这种现象仅在chrome上发生,而在Firefox上则没有(在Firefox中,所有请求都在大约500毫秒后得到答复)。关于为什么会发生任何建议?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。