Что это простыми словами
RxJS — это конвейер для событий внутри приложения.
Аналогия: представьте завод, где по ленте идут детали. Рабочие на разных постах проверяют, фильтруют, красят, собирают — каждая станция делает своё. RxJS работает так же, только вместо деталей по «ленте» идут события: клики мышки, данные с сервера, таймеры. Вы настраиваете, что с ними делать на каждом этапе: отфильтровать лишнее, преобразовать, объединить с другим потоком.
Эти «ленты событий» называются Observable (наблюдаемые). Разработчик подписывается на них и получает данные, когда они появляются.
Официальное определение
Теперь, когда суть понятна, вот как RxJS описывают в вакансиях и документации. Эту формулировку вы будете встречать у заказчика, в резюме и в речи разработчиков — теперь вы понимаете, что за ней стоит.
«RxJS — библиотека для реактивного программирования с использованием Observable, позволяющая композировать асинхронные потоки данных декларативными операторами».
Разберём по словам. «Реактивное программирование» — стиль работы, где приложение реагирует на события автоматически, как только они происходят. «Observable» — те самые «ленты событий», за которыми можно наблюдать. «Асинхронные потоки» значит, что данные приходят не мгновенно, а со временем: ответ сервера, клики, движение мышки. «Декларативные операторы» — готовые команды вроде «отфильтровать», «преобразовать», «подождать секунду», которыми вы описываете, что делать с данными, не расписывая шаги вручную.
Какую задачу решает
Когда приложение работает с событиями — клики, ввод текста, данные с сервера — код быстро превращается в путаницу вложенных обработчиков. RxJS позволяет описать всю логику как последовательность шагов на конвейере: получили событие → отфильтровали ненужное → преобразовали → показали пользователю.
Пример: пользователь вводит текст в строку поиска. RxJS умеет «подождать, пока человек перестанет печатать», «не отправлять запрос, если ввели меньше трёх букв», «отменить старый запрос, если пришёл новый» — всё это встроенными операторами, без ручного программирования таймеров и флагов.
Ещё одна задача — работа со сложными сценариями: объединить данные из двух запросов, дождаться завершения всех параллельных операций, повторить запрос при ошибке.
К какой экосистеме относится
Язык — JavaScript (часто вместе с TypeScript).
Фреймворк — Angular. RxJS встроена в Angular по умолчанию и используется почти везде: HTTP-запросы, формы, роутинг. Работать с Angular без RxJS почти невозможно.
Специальность — frontend-разработчик, работающий с Angular.
Важное уточнение: в других фреймворках (React, Vue) RxJS почти не используется. Это особенность экосистемы Angular.
Чем заменяется
В Angular появилась новая технология — Angular Signals. Это более простой способ работать с данными, который в будущем может снизить зависимость от RxJS. Но пока что RxJS остаётся основным инструментом в Angular, и большинство проектов без неё не обходится.
За пределами Angular у событий есть другие способы управления — Promises и async/await, встроенные в сам JavaScript. Они проще, но менее мощные: подходят для одиночных операций, а не для потоков событий.
Главное: опыт с RxJS плохо переносится на другие фреймворки. Если разработчик работал с Angular и RxJS, а теперь ищет вакансию с React — опыт с RxJS ему почти не пригодится. Это особенность именно Angular.
Что не путать
RxJS ≠ Angular. Angular — это сам фреймворк, RxJS — библиотека внутри него для работы с событиями.
RxJS ≠ NgRx. NgRx — это менеджер состояния для Angular (как Redux для React), который использует RxJS внутри. NgRx строится поверх RxJS, но это разные вещи: можно знать RxJS и не знать NgRx.
RxJS ≠ Promises. Promises — более простой встроенный механизм для одиночных асинхронных операций. RxJS мощнее, но сложнее.
RxJS ≠ Angular Signals. Signals — новый механизм в Angular, который в некоторых случаях может заменить RxJS. Но пока что это дополнение, а не замена.
Насколько это важно при отборе
Короткий ответ: для Angular это критично.
RxJS — это особый случай среди библиотек. Обычно библиотеку можно освоить за несколько дней, но с RxJS всё сложнее: у неё крутая кривая обучения, и опыт приходит месяцами. Если вакансия под Angular, а у кандидата нет опыта с RxJS — это серьёзный сигнал: либо он новичок в Angular, либо работал с очень простыми задачами.
В отличие от большинства библиотек, здесь нельзя сказать «освоит за неделю». RxJS требует изменения мышления, понимания реактивной модели — это долгий процесс. Поэтому для Angular-вакансий опыт с RxJS стоит проверять внимательно.
Когда можно быть мягче: если кандидат джуниор и в резюме указан Angular, но нет явного упоминания RxJS — это не всегда красный флаг. Возможно, он просто не выделил её отдельно, потому что она встроена. Спросите на скрининге: «Работали ли вы с Observable и операторами RxJS?» — и сразу станет ясно.
Это общий ориентир. В разных компаниях требования отличаются, поэтому всегда сверяйтесь с текстом конкретной вакансии.