<MyRusakov.ru />

Разработчик игр на Unreal Engine

Разработчик игр на Unreal Engine

Этот комплект с нуля всего за 7 месяцев сделает Вас Unreal-разработчиком. И при этом учиться достаточно 1 час в день.

Начнёте Вы с основ программирования, постепенно перейдя к C++. Затем очень подробно изучите Unreal Engine, и после научитесь программировать на C++ в Unreal Engine. В конце создадите крупный проект на C++ в Unreal Engine для своего портфолио.

Комплект содержит:

- 416 видеоуроков

- 95 часов видео

- 1024 задания для закрепления материала из уроков

- 3 финальных тестирования

- 4 сертификата

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Основные концепции реактивного программирования

Основные концепции реактивного программирования

Реактивное программирование (RP) - это парадигма программирования, ориентированная на обработку потоков данных и событий с использованием асинхронных операций. Основные концепции реактивного программирования включают в себя следующие:

  1. Потоки данных (Data Streams): реактивное программирование строится вокруг работы с потоками данных, которые представляют собой последовательность событий или изменений в данных. Потоки данных могут быть как горячими (hot), генерирующими события независимо от наличия подписчиков, так и холодными (cold), где события генерируются только при подписке.

  2. Наблюдаемые (издатели) (Observables): Они представляют собой объекты, представляющие поток данных и способные уведомлять своих подписчиков о возникновении новых событий. Издатели могут быть созданы из различных источников данных, таких как события ввода, таймеры, запросы к серверу и другие.

  3. Подписчики (Subscribers): Это компоненты программы, которые подписываются на наблюдаемые объекты (издатели) и реагируют на появление новых данных или событий. Когда наблюдаемое (издатель) создает новые данные, оно уведомляет всех своих подписчиков, предоставляя им эти данные.

  4. Операторы (Operators): Операторы позволяют манипулировать и трансформировать данные в потоке. Они предоставляют функции для фильтрации, преобразования, объединения и других манипуляций событий и данных в потоке.

  5. Асинхронность: реактивное программирование активно использует асинхронные операции для эффективной обработки потоков данных без блокировки основного потока выполнения. Это позволяет создавать отзывчивые приложения, способные обрабатывать множество событий параллельно.

  6. Отмена (Cancellation): реактивное программирование обеспечивает механизм отмены операций. Это важно для эффективного управления ресурсами и предотвращения утечек.

  7. Обработка ошибок: Реактивное программирование предоставляет средства для обработки ошибок в потоках данных, такие как обработка и передача ошибок от одного компонента к другому.

  8. Backpressure (Обратное давление): Это механизм, который позволяет управлять темпом потока данных. Если наблюдаемое создает события быстрее, чем подписчик может их обрабатывать, механизм обратного давления может замедлить или остановить создание новых событий.

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

Давайте рассмотрим простой пример на языке программирования JavaScript с использованием библиотеки RxJS (Reactive Extensions for JavaScript), которая предоставляет реактивные возможности.

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

// Подключаем RxJS
const { Observable } = require('rxjs');

// Создаем наблюдаемый объект, генерирующий числа каждую секунду
const observable = new Observable((observer) => {
  let count = 0;
  const intervalId = setInterval(() => {
    observer.next(count++);
  }, 1000);

  // Очистка интервала при отмене подписки
  return () => clearInterval(intervalId);
});

// Подписываемся на поток данных и выводим числа в консоль
const subscription = observable.subscribe({
  next: (value) => console.log(value),
  error: (error) => console.error(error),
  complete: () => console.log('Завершено'),
});

// Через 5 секунд отменяем подписку
setTimeout(() => {
  subscription.unsubscribe();
  console.log('Подписка отменена');
}, 5000);

В этом примере мы создали наблюдаемый объект observable, который генерирует числа каждую секунду с использованием setInterval. Затем мы подписываемся на этот поток данных, используя метод subscribe. Функции next, error, и complete используются для обработки событий, ошибок и завершения потока данных соответственно.

После 5 секунд мы отменяем подписку с помощью метода unsubscribe. Это простой пример, но он демонстрирует основные концепции реактивного программирования: создание потока данных, подписку на него, и отмену подписки.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.