如何避免节点表达被提取调用阻塞

问题描述

我已经使用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') })

这是它在网络上的外观:

enter image description here

更新

我发现这种现象仅在chrome上发生,而在Firefox上则没有(在Firefox中,所有请求都在大约500毫秒后得到答复)。关于为什么会发生任何建议?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)