我必须设置两个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>