Помещает ли синхронные функции в асинхронную функцию nodejs? - PullRequest
0 голосов
/ 01 декабря 2019

Например, require является синхронным.

Если я добавлю require в асинхронную функцию и вызову эту асинхронную функцию, блокирует ли она nodejs?

1 Ответ

0 голосов
/ 01 декабря 2019

Если я добавлю require в асинхронную функцию и вызову эту асинхронную функцию, блокирует ли она nodejs?

Да, так и есть. Если модуль, который вы используете для загрузки require(), еще не кэширован, то он заблокирует интерпретатор для загрузки модуля с диска с использованием синхронного файлового ввода-вывода. Тот факт, что она находится в функции async, на это ничего не влияет. Функции

async не изменяют блокировку, синхронные операции в любом случае. Они обеспечивают автоматическую обработку исключений и позволяют использовать await и всегда возвращают обещание. Они не обладают магическими способностями влиять на синхронные операции внутри функции.

К вашему сведению, почти во всех случаях модули, которые вам понадобятся в вашем коде, должны загружаться при инициализации модуля. Затем на них можно ссылаться позже из другого кода, не блокируя интерпретатор для их загрузки.

...