Насколько я понимаю, Node.js является однопоточным и обрабатывает каждый запрос по одному. Однако при выполнении асинхронных вызовов он должен иметь возможность обрабатывать новые запросы, пока обратные вызовы еще не вызваны.Node.JS - Обработка входящих запросов с помощью функций Async
Итак, когда я делаю запрос 3 одновременно на следующую реализацию сервера, почему он ждет 10 секунд для первого ответа, а затем 20 для второго и 30 для третьего ...?
var express = require('express');
var app = express();
app.get('*', function(req, res) {
setTimeout(function(){
res.end('done')
},10000)
});
app.listen(8000);
Код выглядит нормально. Есть что-то еще, ограничивающее одновременные соединения с одного IP-адреса, будь то браузер или сервер, я не уверен. – alandarev
Спасибо alandarev, попробовал его из разных браузеров, и это было действительно асинхронно, вы правы. – yosiweinreb
Ваш код отвечает на каждый запрос с задержкой в 10 секунд. Если вы отправляете 3 запроса напрямую один за другим, вы получите 3 ответа через 10 секунд, сразу один за другим. Если вы видите другое поведение, то это не из-за кода, который вы показываете. – Tomalak