Все ли наблюдаемые Rx по умолчанию являются холодными?
По умолчанию , все наблюдаемые Rx являются холодными, за исключением субъектов. Это означает, что они излучают значения только тогда, когда на них подписан хотя бы один наблюдатель.
Операторы Rx для превращения холодных наблюдаемых в горячие
Существуют два основных оператора, которые может преобразовать холодную наблюдаемую в горячую:
withLatestFrom Оператор и холодные наблюдаемые
withLatestFrom не меняет холодность или жару наблюдаемого. В вашем примере:
Rx.fromEvent и поведение Hot/Cold
Несоответствие, которое вы наблюдали в Пример CodePen связан с тем, что событие генерируется только при щелчке по элементу, а не при подписке на наблюдаемую Rx.fromEvent. Из-за этого каждая подписка на наблюдаемые получает разные события.
Упрощенная блок-схема для холодных наблюдаемых
Чтобы проиллюстрировать упрощенный поток данных для холодных наблюдаемых:
Source -> Observer1 -> Observer2
Упрощенная блок-схема для горячих наблюдаемых
Для горячих наблюдаемых поток выглядит следующим образом:
Source -> Subject -> Observer1 -> Observer2
Субъект действует как центральный узел, осуществляя многоадресную рассылку входящих данных всем подписанным наблюдателям.
Операторы многоадресной рассылки (публикация/поделиться)
Операторы многоадресной рассылки создают внутренний субъект и возвращают подключаемый наблюдаемый объект. Когда наблюдаемый объект подключен, субъект подписывается на восходящий наблюдаемый объект и осуществляет многоадресную рассылку данных всем подписанным наблюдателям.
Учитывайте поток данных при использовании операторов
Понимание потока данных и поведение операторов имеет решающее значение. Даже если наблюдаемая является горячей, важно учитывать, как последующие операторы могут повлиять на ее горячее или холодное поведение.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3