Я рассмотрел следующий вопрос SO: Что такое "Горячие и холодные наблюдаемые" ?
Подводя итог:
- холодный наблюдаемый испускает свои значения, когда у него есть наблюдатель, чтобы потреблять их, т.е. последовательность значений, полученных наблюдателями, не зависит от времени подписки. Все наблюдатели будут использовать одну и ту же последовательность значений.
- горячий наблюдаемый испускает значение независимо от его подписок, т.е. значения, полученные наблюдателями, являются функцией времени подписки.
Тем не менее, я чувствую, что горячий и холодный все еще является источником путаницы. Итак, вот мои вопросы:
-
Все ли rx наблюдаемые холодные по умолчанию (за исключением предметов)?
Я часто читаю, что события являются типичной метафорой для горячих наблюдаемых, но я также читал, что
Rx.fromEvent(input, 'click')
является наблюдаемым холодом (?). -
Существуют ли какие-либо операторы Rx, которые превращают холодные наблюдаемые в горячие наблюдаемые (кроме
publish
иshare
)?Например, как это работает с оператором Rx
withLatestFrom
? Пустьcold$
является наблюдаемым холодом, на котором он был где-то подписан. Будет лиsth$.withLatestFrom(cold$,...)
быть горячим наблюдаемым?Или, если я сделаю
sth1$.withLatestFrom(cold$,...), sth2$.withLatestFrom(cold$,...)
и подписаться наsth1
иsth2
, всегда буду видеть одно и то же значение дляsth
? -
Я думал, что
Rx.fromEvent
создает холодные наблюдаемые, но это не так, как упоминалось в одном из ответов. Тем не менее, я по-прежнему смущен этим поведением: codepen.io/anon/pen/NqQMJR?editors=101. Различные подписки получают разные значения от одного и того же наблюдаемого. Разве не было событиеclick
?