Bezdepbonusu7Программирование: статьи и ответы

Функции RxJS (часть 4)

Архив Bezdepbonusu72 мин чтения

конкат

Это было весело. Поскольку я использую interval для настройки Observable, я получаю холодный. Поскольку мой мраморный компонент подписывается на переданный ему Observable, он создает новый интервал для каждой подписки. Каждый из моих шариков стрелял волей-неволей, а не правильно отображал пример, который я имел в виду. Чтобы справиться с этим, я воспользовался оператором под названием поделиться, который в этом случае разделял исходный интервал с каждой новой подпиской вместо создания новой.

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

конкат

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

Примечание. Существует две функции concat. Одна из них, другая - устаревшая версия оператора, которую я не буду рассматривать.



rxjsfunctions-concat-ex1 - StackBlitz
Стартовый проект для приложений Angular, который экспортируется в интерфейс командной строки Angular stackblitz.com



Пример использования

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

Что стоит отметить в этом примере: в отличие от вышеприведенного StackBlitz, каждый из этих наблюдаемых аудиоклипов намеренно оставлен холодным. Каждый раз, когда наблюдатель подписывается на Observable, созданный concat, список воспроизведения начинается заново. Если вместо этого вы хотите, чтобы новые подписчики подхватывались из текущего места воспроизведения, вы могли бы реализовать поделиться для каждого клипа.

Спасибо за чтение. Ждите Часть 5 и обязательно ознакомьтесь с предыдущими статьями.

JavaScriptReactivex

Похожие материалы

Статья из архива сайта: перевод и редактура материала сообщества разработчиков. Версии библиотек и инструментов могли измениться, сверяйтесь с официальной документацией.