Итак, у меня есть понимание того, как работает Node.js: у него есть один поток прослушивателя, который получает событие, а затем делегирует его в рабочий пул. Рабочий поток уведомляет слушателя о завершении работы, а затем слушатель возвращает ответ вызывающему.
Мой вопрос заключается в следующем: если я встану на HTTP-сервер в Node.js и вызову сон на одном из моих событий маршрутизируемого пути (например, "/test/sleep" ), вся система остановится. Даже поток одного слушателя. Но я понял, что этот код происходит в рабочем пуле.
Теперь, напротив, когда я использую Mongoose для общения с MongoDB, чтение БД является дорогостоящей операцией ввода-вывода. Node, кажется, способен делегировать работу потоку и получать обратный вызов, когда он завершается; время, затраченное на загрузку из БД, похоже, не блокирует систему.
Как Node.js решает использовать поток пула потоков и поток слушателя? Почему я не могу написать код события, который спит и только блокирует поток пула потоков?