Общая картина о BehaviorSubject в RxJS
Когда у вас есть специализированные требования к приложению, действительно стоит знать заранее о существовании этих специализированных предметов, чтобы решить проблему чистым способом и без реализации большого количества кода.
Очень полезно знать, как использовать эти фундаментальные элементы непосредственно в ваших сценариях использования. Субъекты дают вам полный контроль над тем, как наблюдаемые выполняют и доставляют значения.
В этой статье я собираюсь дать вам общую картину по одной из этих специализированных тем:
BehaviorSubject
Давайте нырнем!
Если вы не понимаете, о чем я говорю, я рекомендую начать с этого:
Я предполагаю, что у вас есть необходимые знания, чтобы перейти к следующей расширенной части RxJS.
Тема (если она вам знакома, пропустите эту часть)
Чтобы узнать о специализированном предмете publishBehavior
, нам нужно, прежде всего, узнать о Subject
.
Краткое обновление информации о Subjects
. Вот характеристики темы:
- Не что иное, как наблюдаемое (шепот: у этого парня также есть метод subscribe ())
- Тоже наблюдатель.
- Может производить и получать значения, поскольку он является наблюдаемым и наблюдателем одновременно.
- У него может быть список наблюдателей (в отличие от объекта Observable)
- У него есть своеобразное состояние (по крайней мере, как в React-приложениях). Он может вести список подписавшихся на него наблюдателей.
- Может передавать значение нескольким наблюдателям одновременно (в отличие от Observable, может передавать только одному Observer за раз. Если другой наблюдатель подписывается на тот же самый наблюдаемый объект, он будет выполнен во второй раз.
- Следовательно, он является многоадресным (в отличие от Observable).
Subject
используется почти во всех обычных и наиболее распространенных случаях использования. Но иногда для функциональности требуется какое-то уникальное поведение. Вот почему существуют некоторые конкретные Субъекты, и одна из них - publishBehavior
.
Если вы хотите узнать больше о предметах:
BehaviorSubject
BehaviorSubject
- это вариантSubject
, который требует начального значения и выдает его текущее значение всякий раз, когда он подписан.
- Получить значение и немедленно передать это значение наблюдателям, если источник еще не произвел значение.
- Если наблюдатель добавлен после того, как источник начинает производить значения, он будет передавать новое значение Observer'у вместо начального значения.
- Чтобы воспользоваться этим поведением, используйте оператор
publishBehavior
- Первый, кто подписался, получает начальное значение немедленно, поскольку наблюдаемый источник еще не произвел значений.
- Как только источник будет готов, для опоздавших подписчиков нет значений.
А теперь давайте код
Пример:
Пример с оператором publishBehavior ():
Объяснение
Для этого специализированного объекта наблюдаемый источник немедленно испускает начальное значение, которое отправляется сразу же, прежде чем наблюдаемый источник генерирует значения. В этом примере я использовал цифру 6.
Как вы можете видеть, первый Observer, который первым подписался, получил начальное значение немедленно, потому что в то время исходная наблюдаемая еще не произвела значений.
После этого начали появляться исходные значения. И каждый подписавшийся наблюдатель немедленно получает самое последнее отправленное значение. Вот почему наблюдатель 3 не получил значение 0, потому что он подписался позже. То же самое касается наблюдателя 4, который не получил никакого значения, потому что, когда он подписался, наблюдаемый уже отправил все созданные значения и запустил complete ().
Как только источник будет готов, для опоздавших подписчиков нет значений.
Узнать о существовании специализированных Subjects
необходимо. Во-первых, потому что вы будете иметь представление о том, что использовать, когда у вас возникнут особые потребности в приложении. Во-вторых, реализация именно этой потребности будет намного проще и чище!
Последняя специализированная тема будет в следующей статье:
ReplaySubject
Как обычно, дайте мне знать, понравилась ли вам эта статья, и если вы хотите, чтобы я дал вам больше примеров BehaviorSubject
и вариантов использования в будущей статье 😉
Увидимся в следующий раз!
Надеюсь, эта статья была для вас полезной!
Спасибо ❤
Если вы заинтересованы в том, чтобы стать платным участником, вы можете использовать мою реферальную ссылку. Увидимся в следующий раз! ^^
Дорогой читатель, спасибо тебе за то, что ты в моей жизни.
Давайте свяжемся с Медиум, Linkedin, Facebook, Instagram, YouTube, или Twitter.
См. Мою электронную книгу об основах Интернета и общей культуре.
Больше контента на plainenglish.io