Что это простыми словами

RxJS — это конвейер для событий внутри приложения.

Аналогия: представьте завод, где по ленте идут детали. Рабочие на разных постах проверяют, фильтруют, красят, собирают — каждая станция делает своё. RxJS работает так же, только вместо деталей по «ленте» идут события: клики мышки, данные с сервера, таймеры. Вы настраиваете, что с ними делать на каждом этапе: отфильтровать лишнее, преобразовать, объединить с другим потоком.

Эти «ленты событий» называются Observable (наблюдаемые). Разработчик подписывается на них и получает данные, когда они появляются.

Официальное определение

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

«RxJS — библиотека для реактивного программирования с использованием Observable, позволяющая композировать асинхронные потоки данных декларативными операторами».

Разберём по словам. «Реактивное программирование» — стиль работы, где приложение реагирует на события автоматически, как только они происходят. «Observable» — те самые «ленты событий», за которыми можно наблюдать. «Асинхронные потоки» значит, что данные приходят не мгновенно, а со временем: ответ сервера, клики, движение мышки. «Декларативные операторы» — готовые команды вроде «отфильтровать», «преобразовать», «подождать секунду», которыми вы описываете, что делать с данными, не расписывая шаги вручную.

Какую задачу решает

Когда приложение работает с событиями — клики, ввод текста, данные с сервера — код быстро превращается в путаницу вложенных обработчиков. RxJS позволяет описать всю логику как последовательность шагов на конвейере: получили событие → отфильтровали ненужное → преобразовали → показали пользователю.

Пример: пользователь вводит текст в строку поиска. RxJS умеет «подождать, пока человек перестанет печатать», «не отправлять запрос, если ввели меньше трёх букв», «отменить старый запрос, если пришёл новый» — всё это встроенными операторами, без ручного программирования таймеров и флагов.

Ещё одна задача — работа со сложными сценариями: объединить данные из двух запросов, дождаться завершения всех параллельных операций, повторить запрос при ошибке.

К какой экосистеме относится

Важное уточнение: в других фреймворках (React, Vue) RxJS почти не используется. Это особенность экосистемы Angular.

Чем заменяется

В Angular появилась новая технология — Angular Signals. Это более простой способ работать с данными, который в будущем может снизить зависимость от RxJS. Но пока что RxJS остаётся основным инструментом в Angular, и большинство проектов без неё не обходится.

За пределами Angular у событий есть другие способы управления — Promises и async/await, встроенные в сам JavaScript. Они проще, но менее мощные: подходят для одиночных операций, а не для потоков событий.

Главное: опыт с RxJS плохо переносится на другие фреймворки. Если разработчик работал с Angular и RxJS, а теперь ищет вакансию с React — опыт с RxJS ему почти не пригодится. Это особенность именно Angular.

Что не путать

Насколько это важно при отборе

Короткий ответ: для Angular это критично.

RxJS — это особый случай среди библиотек. Обычно библиотеку можно освоить за несколько дней, но с RxJS всё сложнее: у неё крутая кривая обучения, и опыт приходит месяцами. Если вакансия под Angular, а у кандидата нет опыта с RxJS — это серьёзный сигнал: либо он новичок в Angular, либо работал с очень простыми задачами.

В отличие от большинства библиотек, здесь нельзя сказать «освоит за неделю». RxJS требует изменения мышления, понимания реактивной модели — это долгий процесс. Поэтому для Angular-вакансий опыт с RxJS стоит проверять внимательно.

Когда можно быть мягче: если кандидат джуниор и в резюме указан Angular, но нет явного упоминания RxJS — это не всегда красный флаг. Возможно, он просто не выделил её отдельно, потому что она встроена. Спросите на скрининге: «Работали ли вы с Observable и операторами RxJS?» — и сразу станет ясно.

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