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

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

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

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

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

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

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

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

var fs = require("fs");
 
var data = fs.readFileSync('input.txt');
 
console.log(data.toString());
console.log("Program Ended");

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

Современные тенденции и подходы в веб-разработке

Узнайте алгоритм быстрого профессионального роста с нуля в сайтостроении

Узнать подробнее
$ node main.js

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

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!
Program Ended

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

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

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

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

var fs = require("fs");
 
fs.readFile('input.txt', function (err, data) {
 if (err) return console.error(err);
 console.log(data.toString());
});
 
console.log("Program Ended");

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

$ node main.js

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

Program Ended
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

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

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

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

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

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

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

Современные тенденции и подходы в веб-разработке

Узнайте алгоритм быстрого профессионального роста с нуля в сайтостроении

Узнать подробнее
Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Курс по NodeJS. Основы

Прямо сейчас посмотрите курс по NodeJS!

Смотреть курс

Метки:

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

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

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree