RxJS: основы и терминология

Что такое реактивное программирование?

Парадигма программирования, ориентированная на потоки данных и распространение изменений. Упрощённо — приложение, управляемое потоком событий (например, клик мыши), за которым наблюдают подписчики и реагируют на события.


Ключевые понятия

  • Observable — объект, представляющий ленивый поток значений во времени, на который можно подписаться (синхронно или асинхронно, от нуля до бесконечного числа значений).
  • Observer — объект-обработчик, получающий уведомления от Observable. Имеет три метода: next(), error(), complete().
  • Producer — источник значений Observable (DOM-событие, HTTP-запрос, массив и т.д.).
  • Consumer — код, который подписывается на Observable и получает значения.
  • Subscription — объект, возвращаемый при подписке; нужен в первую очередь для отмены выполнения (unsubscribe()).

Что такое оператор?

Операторы — функции для манипуляции и преобразования потоков Observable. Основные типы:

  • Creation (создания)
  • Transformation (преобразования)
  • Filtering (фильтрации)
  • Combination (комбинирования)
  • Error handling (обработки ошибок)

Observable vs Promise

PromiseObservable
Количество значенийоднонесколько во времени
Ленивостьне ленив (запускается сразу)ленив (запускается при подписке)
Отменанельзя отменитьможно через unsubscribe()
Операторынетmap, filter, retry и др.

Обычный (cold) Observable ленив — не выполняется, пока на него не подпишутся. Hot-потоки (например, на базе Subject) могут излучать значения независимо от подписок.