NodeJs - цикл обработки событий обрабатывает только запросы ввода / вывода? - PullRequest
0 голосов
/ 30 сентября 2018

В общем случае цикл обработки событий только для ввода-вывода?и что именно IO работа?Например, предположим, что в NodeJs поступает запрос, который затем отправляет исходящий http-запрос в API, чтобы получить некоторые данные, не блокируя при этом пользователя.

Это задание ввода-вывода и как будут обрабатываться NodeJЭто?что если вместо http-запроса я хотел бы выполнить асинхронные длительные вычисления и затем вернуть значение пользователю?Это тоже обрабатывается циклом событий, несмотря на то, что он связан с процессором?

1 Ответ

0 голосов
/ 30 сентября 2018

Как правило, цикл обработки событий только для ввода-вывода?

Я бы не считал таймеры (setTimeout, setInterval) и планирование (setImmeadiate, process.nextTick)) как IO, но обычно можно сказать, что события в цикле обработки событий происходят извне

и что именно представляет собой работа IO?

Это зависит от контекста, о котором вы говорите.Каждая программа получает определенный ввод от пользователя и генерирует определенный вывод.Например, в терминале вводом являются ваши нажатия клавиш, а выводом - то, что отображается.Когда речь идет о IO nodejs, обычно речь идет о сетевых / файловых операциях или, в более общем смысле: код не написан на js.

Например, допустим, что запрос поступает в NodeJ, которые затем отправляют исходящие сообщения.http запрос к API получить некоторые данные, не блокируя при этом пользователя.

Это задание ввода-вывода и как бы его обрабатывал NodeJ?

Nodejs порождает фонПоток, который выполняет запрос, тем временем основной процесс продолжается с другими вещами (продолжается с другими событиями в очереди событий).Затем, если выполняется асинхронный запрос, фоновый процесс помещает результат в очередь событий, цикл обработки событий извлекает его оттуда и выполняет обратные вызовы и т. Д.

что если вместо запроса http, который я хотеласинхронно сделать длительный расчет и затем вернуть значение пользователю?

Вы должны порождать другой поток в nodejs, в противном случае длительные вычисления выполняются синхронно.

Это тоже обрабатывается циклом событий, несмотря на то, что он связан с процессором?

Все когда-нибудь попадает в цикл обработки событий, и все выполняется на процессоре ...

...