节点JS Express服务器同步处理来自同一浏览器的请求吗?

时间:2018-09-15 23:28:02

标签: node.js api express asynchronous

我必须设置两个GET路由器/ a和/ b。

我做了setInterval()在PROMISE中等待5秒然后响应。

接下来,我发送了三个请求,分别是/ a两次和/ b一次(大约)。

5秒后,我同时从/ a和/ b得到响应,从/ a得到第三响应。这些请求在同一浏览器中发送。

如果我从两个不同的浏览器向/ a发送两个请求,则响应会同时返回。

为什么nodejs阻止了从同一浏览器发送相同API的请求。

从同一浏览器到/ a的请求是同步的。 来自不同浏览器的对/ a的请求是异步的。

如何使节点服务器异步工作?

谢谢

这是我的代码。

路由器:

router.get("/a", async function(req, res) {
    await new Promise((resolve, reject) => setTimeout(resolve, 5000));
    res.send("This is A");
});

router.get("/b", async function(req, res) {
    await new Promise((resolve, reject) => setTimeout(resolve, 5000));
    res.send("This is B");
});

前端:在Chrome上发送GET请求

<html>
    <header>
        <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
        <script>
            let urlArray = ['http://localhost:3002/a','http://localhost:3002/a','http://localhost:3002/b'];
            function send(url) {
                axios.get(url)
                .then(function (response) {
                    console.log(response);
                })
                .catch(function (error) {
                    console.log(error);
                })
            }
            for(i in urlArray) {
                console.log(urlArray[i]);
                send(urlArray[i]);
            }
        </script>
    </header>
</html>

结果: result1 result2

0 个答案:

没有答案