Используют ли файловые операции в NodeJS асинхронность ОС (опрос?) Или она блокирует цикл событий?

#node.js

#node.js

Вопрос:

Используют ли файловые операции в NodeJS асинхронность ОС (опрос?) Или она блокирует цикл событий? Я хочу создать веб-приложение, которое требует много загрузки, и я беспокоюсь, что это может вызвать задержки.

Комментарии:

1. Node.js документация довольно ясна в том смысле, что она может делать и то, и другое; есть ли что-то конкретное, чего вам не хватает?

2. Однако асинхронность не означает, что она не блокирует цикл событий.

3. Если у меня много пользователей, загружающих файлы, это заблокирует цикл событий и заблокирует приложение. Это то, что я пытаюсь понять.

Ответ №1:

Опрос не используется.

блокирует ли это цикл событий?

Это произойдет, если вы используете версии синхронизации. Например, использование readFileSync заблокирует запуск других JS до тех пор, пока файл не будет прочитан и возвращен обратно. Это вполне может быть проблемой, если несколько частей скрипта вызывают такой метод в разное время.

Но если вы используете асинхронные версии (например, readFile ), которые либо принимают обратный вызов, либо возвращают обещание, они не будут блокировать запуск других JS во время выполнения файловой операции.

Если вы сомневаетесь, используйте одну из асинхронных версий — я бы использовал версии синхронизации только для небольших приложений с сегментами кода, которые будут запускаться только один раз, например, для первоначального чтения файла конфигурации, для которого предотвращение запуска других JS во время этой одноразовой задержки не является проблемой.