SUMMON_THE_CODER Telegram 20
Музыкальный RxJS или как обрабатывать события правильно

Higher-order observables — тема безумно интересная и глубокая, но в то же время вызывающая наибольшее непонимание у разработчиков, которые только изучают RxJS. Существует множество способов объяснить, как работают операторы switchMap, concatMap, mergeMap и exhaustMap: можно сравнивать их с потоками воды, конвейерами, очередями заказов и многими другими вещами. Но, на мой взгляд, лучшая аналогия была приведена в телеграм группе по RxJS. Я немного доработал её и вот как она звучит.

Представьте, что у вас есть приложение с «реактивным» музыкальным плеером, и по клику на кнопки можно переключать музыку. Каждая кнопка — это отдельный higher-order observable оператор. Как же будет происходить переключение музыки при клике на эти кнопки?

🎶 switchMap

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

Реальные примеры:
- Когда пользователь вводит текст в строку поиска, приложение отправляет запрос на сервер. Если пользователь продолжает вводить текст, предыдущие запросы отменяются, чтобы не загружать неактуальные данные.

- На странице каталога товаров пользователь может изменять фильтры, и данные обновляются на основе новых параметров.

🎶 mergeMap

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

Реальные примеры:
- Получение уведомлений одновременно из нескольких источников (например, чата и системы оповещений).

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

🎶 concatMap

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

Реальные примеры:
- Отправка формы, а затем запуск загрузки данных, связанных с результатом её обработки.

- Обработка очереди задач (например, отправка файлов) и показ уведомлений о завершении каждой задачи.

🎶 exhaustMap

Оператор идеально подходит для строгого контроля воспроизведения. Если трек уже играет, любые новые клики полностью игнорируются до тех пор, пока текущий трек не закончится. Это как если бы плеер говорил: «Подожди, я занят. Дождись окончания трека, и только потом я приму новую команду».

Реальные примеры:
- Когда пользователь отправляет форму, и нужно игнорировать повторные нажатия кнопки, пока форма не будет отправлена.

- Пользователь вводит одноразовый код, и пока сервер его проверяет, новые попытки игнорируются.

Итак, какой оператор выбрать?


mergeMap - если операции могут выполняться одновременно.

switchMap - для отмены предыдущих действий при новом событии.

concatMap - когда нужно выполнять операции строго по порядку.

exhaustMap - для защиты от лишних запусков во время выполнения.

@summon_the_coder

#RxJS #Angular #ReactiveProgramming
1👍24🔥9😱3👨‍💻1🤝1



tgoop.com/summon_the_coder/20
Create:
Last Update:

Музыкальный RxJS или как обрабатывать события правильно

Higher-order observables — тема безумно интересная и глубокая, но в то же время вызывающая наибольшее непонимание у разработчиков, которые только изучают RxJS. Существует множество способов объяснить, как работают операторы switchMap, concatMap, mergeMap и exhaustMap: можно сравнивать их с потоками воды, конвейерами, очередями заказов и многими другими вещами. Но, на мой взгляд, лучшая аналогия была приведена в телеграм группе по RxJS. Я немного доработал её и вот как она звучит.

Представьте, что у вас есть приложение с «реактивным» музыкальным плеером, и по клику на кнопки можно переключать музыку. Каждая кнопка — это отдельный higher-order observable оператор. Как же будет происходить переключение музыки при клике на эти кнопки?

🎶 switchMap

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

Реальные примеры:
- Когда пользователь вводит текст в строку поиска, приложение отправляет запрос на сервер. Если пользователь продолжает вводить текст, предыдущие запросы отменяются, чтобы не загружать неактуальные данные.

- На странице каталога товаров пользователь может изменять фильтры, и данные обновляются на основе новых параметров.

🎶 mergeMap

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

Реальные примеры:
- Получение уведомлений одновременно из нескольких источников (например, чата и системы оповещений).

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

🎶 concatMap

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

Реальные примеры:
- Отправка формы, а затем запуск загрузки данных, связанных с результатом её обработки.

- Обработка очереди задач (например, отправка файлов) и показ уведомлений о завершении каждой задачи.

🎶 exhaustMap

Оператор идеально подходит для строгого контроля воспроизведения. Если трек уже играет, любые новые клики полностью игнорируются до тех пор, пока текущий трек не закончится. Это как если бы плеер говорил: «Подожди, я занят. Дождись окончания трека, и только потом я приму новую команду».

Реальные примеры:
- Когда пользователь отправляет форму, и нужно игнорировать повторные нажатия кнопки, пока форма не будет отправлена.

- Пользователь вводит одноразовый код, и пока сервер его проверяет, новые попытки игнорируются.

Итак, какой оператор выбрать?


mergeMap - если операции могут выполняться одновременно.

switchMap - для отмены предыдущих действий при новом событии.

concatMap - когда нужно выполнять операции строго по порядку.

exhaustMap - для защиты от лишних запусков во время выполнения.

@summon_the_coder

#RxJS #Angular #ReactiveProgramming

BY SUMMON_THE_CODER


Share with your friend now:
tgoop.com/summon_the_coder/20

View MORE
Open in Telegram


Telegram News

Date: |

It’s yet another bloodbath on Satoshi Street. As of press time, Bitcoin (BTC) and the broader cryptocurrency market have corrected another 10 percent amid a massive sell-off. Ethereum (EHT) is down a staggering 15 percent moving close to $1,000, down more than 42 percent on the weekly chart. So far, more than a dozen different members have contributed to the group, posting voice notes of themselves screaming, yelling, groaning, and wailing in various pitches and rhythms. "Doxxing content is forbidden on Telegram and our moderators routinely remove such content from around the world," said a spokesman for the messaging app, Remi Vaughn. A few years ago, you had to use a special bot to run a poll on Telegram. Now you can easily do that yourself in two clicks. Hit the Menu icon and select “Create Poll.” Write your question and add up to 10 options. Running polls is a powerful strategy for getting feedback from your audience. If you’re considering the possibility of modifying your channel in any way, be sure to ask your subscribers’ opinions first. In the next window, choose the type of your channel. If you want your channel to be public, you need to develop a link for it. In the screenshot below, it’s ”/catmarketing.” If your selected link is unavailable, you’ll need to suggest another option.
from us


Telegram SUMMON_THE_CODER
FROM American