Если я вызову его быстро 3 раза, первый ответ займет 5 секунд, второй - 10, а третий - 15, указывая на то, что запросы были обработаны последовательно.
Это только потому, что ваш браузер сериализует запросы, потому что все они запрашивают один и тот же ресурс.На стороне Node.js / Express эти запросы не зависят друг от друга.Если бы они отправлялись от трех отдельных клиентов один за другим, каждый из них получал бы ответ примерно через пять секунд (не через 5, 10 и 15 секунд).
Например, я обновил ваш код довыведите дату / время ответа:
res.send('Hello World! ' + new Date().toISOString())
... и затем откройте http://localhost:4000
в трех отдельных браузерах так быстро, как только сможете (мне кажется, не все так быстро: -)) .Время ответов составляло:
16:15:58.819Z
16:16:00.361Z
16:16:01.164Z
Как видите, они не разделены на пять секунд.
Но если я сделаю это в трех окнах в одном браузере, они получатсериализовано:
16:17:13.933Z
16:17:18.938Z
16:17:23.942Z
Если я дополнительно обновлю ваш код, чтобы он обрабатывал три разные конечные точки:
function handler(req, res) {
sleep(5000).then(()=>{
res.send('Hello World! ' + new Date().toISOString())
})
}
app.get('/a', handler);
app.get('/b', handler);
app.get('/c', handler);
Затем, даже в одном браузере, запросы /a
, /b
и /c
не сериализуются.