NodeJs / экспресс-запрос заблокирован SetTimeout? - PullRequest
0 голосов
/ 25 апреля 2018

В приведенном ниже примере я ввел искусственную задержку в 10 секунд перед возвратом ответа.

Но если я параллельно открываю страницу на двух отдельных вкладках, 2-й запрос блокируется и не начинает обработку, пока не завершится 1-й запрос. Другими словами, 2-й «метод ввода» не будет отображаться до тех пор, пока 1-й запрос полностью не завершится (через 10 секунд).

Почему 2-й запрос заблокирован? Я думал, что NodeJ не должны блокироваться при выполнении асинхронного кода.

app.get('/', function (req, res) {
    console.log('entering method');

    setTimeout(() => {
        res.send('hello world');
    }, 10000);
});

1 Ответ

0 голосов
/ 25 апреля 2018

Многие браузеры ограничивают количество одновременных запросов к одному и тому же серверу. Это ограничение браузера, а не Node.js.

Попробуйте использовать curl, и вы увидите, что запросы не заблокированы.

curl http://localhost:{port} &
curl http://localhost:{port} &

Или используя Apache Benchmark:

ab -n 10 -c 2 http://localhost:{port}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...