Node.js — Цикл событий

Node.js — Цикл событий

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

Программирование на основе событий

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

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

Node.js — Цикл событий

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

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

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

Узнать подробнее
// Импорт модуля событий
var events = require('events');
 
// Создание объекта eventEmitter
var eventEmitter = new events.EventEmitter();

Ниже приведен синтаксис привязки обработчика события к событию:

// Привязка к событию обработчика события
eventEmitter.on('eventName', eventHandler);

Мы можем запустить событие программно следующим образом:

// Запуск события 
eventEmitter.emit('eventName');

Пример

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

// Импорт модуля событий
var events = require('events');
 
 
// Создание объекта eventEmitter
var eventEmitter = new events.EventEmitter();
 
// Создание обработчика событий
var connectHandler = function connected() {
 console.log('connection succesful.');
 
 // Запуск события data_received 
 eventEmitter.emit('data_received');
}
 
// Привязка обработчика события к событию
eventEmitter.on('connection', connectHandler);
 
// Привязка события data_received к анонимной функции
eventEmitter.on('data_received', function(){
 console.log('data received succesfully.');
});
 
// Запуск события connection
eventEmitter.emit('connection');
 
console.log("Program Ended.");

Теперь попробуем запустить приведенную выше программу:

$ node main.js

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

connection successful.
data received successfully.
Program Ended.

Как работают приложения Node?

В приложении на Node любая асинхронная функция принимает обратный вызов в качестве последнего параметра, а функция обратного вызова принимает ошибку в качестве первого параметра. Вернемся к предыдущему примеру. Создайте текстовый файл с именем 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");
 
fs.readFile('input.txt', function (err, data) {
 if (err){
 console.log(err.stack);
 return;
 }
 console.log(data.toString());
});
console.log("Program Ended");

Здесь fs.readFile() — это асинхронная функция, которая должна считывать файл. Если во время операции чтения возникает ошибка, объект err будет содержать соответствующую ошибку, иначе считывается содержимое файла. readFile передает err и данные в функцию обратного вызова после завершения операции чтения, которая выводит содержимое.

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

Источник: 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