Node.js — Концепция функции обратных вызовов

Node.js — Концепция функции обратных вызовов

От автора: обратный вызов является асинхронным эквивалентом функции. Функция обратного вызова вызывается по завершении выполнения задачи. В Node js функции обратного вызова используются для различных целей. Все API-интерфейсы Node написаны таким образом, чтобы они поддерживали обратные вызовы.

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

Пример блокирующего выполнение кода

Создайте текстовый файл с именем input.txt со следующим содержимым:

Создайте файл js с именем main.js со следующим кодом:

Теперь запустите main.js:

В результате мы получим следующее.

Пример неблокирующего кода

Создайте текстовый файл с именем input.txt со следующим содержимым.

Измените файл main.js следующим образом:

Теперь запустите main.js:

В результате мы получим следующее.

Эти два примера иллюстрируют концепцию блокирующих и неблокирующих вызовов.

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

Во втором примере программа не ожидает завершения считывания файла, а начинает выводить «Program Ended», в то же время программа без блокировки продолжает чтение файла.

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

Источник: //www.tutorialspoint.com/

Редакция: Команда webformyself.

Метки:

Похожие статьи:

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