Узел JS Express сервер обрабатывает запросы из одного и того же браузера синхронно? - PullRequest
0 голосов
/ 16 сентября 2018

Мне нужно два 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...