Node.js имеет так называемый цикл обработки событий, и он выполняется только одним потоком.
Этот цикл просто выполняет задачу (в вашем случае выполняется ваш код .js), а затем этот один поток долженидти от начала до конца.За это время ничего больше не будет выполнено.(просто обратите внимание, что для опытных пользователей - если вы порождаете рабочих, вы можете, но это не то, как вы обычно используете Node.js)
У него много преимуществ - нет тупиков, детерминированное поведение и т. д.
Таким образом, асинхронность означает, что если вы запускаете асинхронную задачу (то есть запрос к некоторой сети), она не блокирует ваш цикл обработки событий.Он либо помещается в стек и ожидает, когда его возьмёт цикл обработки событий, либо, если это какой-то более продвинутый модуль, он порождает работника внутри для обработки чего-либо внутри.
Однако код, который вы пишете, всегда будет выглядеть так:
- взять задачу из стека цикла событий
- выполнить весь синхронный контекст от начала до конца
- поместить все асинхронные задачи в стек
- повторитьпроцесс