Мне нужно два GET роутера setup / a и /b.
Я установил setInterval () в течение 5 секунд, ожидая ОБЕЩАНИЯ, а затем ответа.
Затем я отправил ТРИ запроса, / a два раза и / b один раз в одно и то же время (приблизительно).
Я получил ответы одновременно от / a и / b и третий ответ от / a через 5 секунд. Эти запросы отправляются в одном браузере.
Если я отправлю два запроса в / 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");
});
Front-end: отправка GET-запроса на Chrome
<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