Как node.js может отслеживать множество запросов к одной и той же конечной точке? - PullRequest
0 голосов
/ 04 февраля 2020

Допустим, у меня есть конечная точка, которая выполняет некоторую фоновую работу ввода-вывода перед отправкой ответа, подобного следующему коду:

app.get('/', (req, res) => {
  someIOWork(() => {
      res.send('Some response');
  });
});

Насколько я понимаю, в этом случае узел не будет блокировать основной поток. Таким образом, ожидая, пока работа ввода-вывода завершится sh, он обработает любой следующий входящий запрос и, как только будет выполнена эта фоновая работа, отправит ответ. Мне трудно понять, как узел может отслеживать, какой ответ отправить на какой запрос? Я надеюсь, что мой вопрос был ясен и заранее спасибо

1 Ответ

2 голосов
/ 04 февраля 2020

JavaScript закрытие заставляет это работать. Обратный вызов вашего someIOWork() имеет ссылку на объекты req и res. Они связаны с тем конкретным c соединением, на которое вы отвечаете. Другие вызовы или ваш обработчик маршрута имеют различные объекты req и res, представляющие отдельные соединения.

Существует более подробное объяснение этой конкретной c ситуации, когда Node.js обслуживает несколько запросов, в то время как один вызов выполняет IO при 100 новых запросов в Node.js, все еще обслуживая первый

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