Что мы подразумеваем под «NodeJS является асинхронным»? Объясните, сравнив это с синхронным программированием?

Node.js — это кроссплатформенная среда выполнения JavaScript с открытым исходным кодом, которая по своей природе асинхронна, как и JavaScript. Когда мы говорим, что Node.js является асинхронным, это означает, что Node.js предоставляет возможность удалять зависимости одного кода от другого. Асинхронное программирование действует как шаблон проектирования, обеспечивающий неблокирующее выполнение кода. Термин «неблокирующий» означает, что он не остановит выполнение фрагмента кода. Асинхронное поведение Node.js помогает плавно выполнять код, не завися от другого кода и не следуя какому-либо порядку.

В общем, все программирование, которое мы делаем, работает синхронно. Это означает, что поток выполнения идет одна строка за другой. Это означает, что поток выполнения не перейдет к следующей строке, пока одна строка не завершит выполнение полностью. Это ясно объясняет, что блоки кода зависят от предыдущей строки. Главный недостаток такого подхода к программированию заключается в том, что он излишне останавливает или приостанавливает выполнение кода из-за зависимости. Следовательно, приложения, созданные с использованием механизма синхронного программирования, могут замедлять выполнение программы.

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

Хотя режим асинхронного программирования лучше, он имеет свою цену. Чтобы включить асинхронное поведение в программировании, разработчикам необходимо реализовать концепцию обратного вызова. Асинхронное программирование является сложной задачей по сравнению с синхронным программированием. Кроме того, такие программы в конечном итоге тратят время на спасение от адских сценариев обратного вызова. Разработчики должны отдельно научиться эффективно управлять ситуациями «аду обратных вызовов». Многие основные функции Node.js имеют как синхронные, так и асинхронные разновидности. В большинстве случаев разработчикам будет гораздо разумнее использовать асинхронную функцию; в противном случае нет смысла использовать Node.js.

Например:

for (var g = 0; g ‹ 6; i++) {

(функция (г) {

setTimeout (функция() {

console.log(г);

}, g);

}) (g);

}

В этом фрагменте кода создается каждый тайм-аут, а затем увеличивается значение «g». Как только обратный вызов вызывается, он ищет значение переменной-счетчика «g». Это решение помогает построить замыкание для хранения текущего значения «g».