Кто-то может объяснить различия между Заметным и ConnectableObservable? Документация Расширений Rx очень редка, и я не понимаю, в каких случаях ConnectableObservable полезен.
Этот класс используется в методах Воспроизведения/Чернослива.
Краткий ответ:
IConnectableObservable
представляет собой ожидающий горячий наблюдаемый объект, который может использоваться несколькими подписчиками. Вызов IConnectableObservable.Connect ()
вызывает изменение на горячий (подписывается на наблюдаемый холодный источник)
Длинный ответ:
A холодный наблюдаемый (например, Observable. Диапазон
) воспроизводит последовательность для каждого абонента. Это аналог секундомера, где каждому подписчику предоставляется свой секундомер. Подписчик запускает секундомер, подписавшись, и секундомер останавливается (и сбрасывается), как только наблюдатель прекращает наблюдение.
горячая наблюдаемая разделяет последовательность между всеми подписчиками. Это аналогично тому, что есть один секундомер, и всем подписчикам предоставляется одно и то же время, независимо от того, когда они начали смотреть.
IObservable.Publish
преобразует холодное наблюдаемое в горячее наблюдаемое, но возвращает IConnectableObservable
. Это позволяет подписчикам подписаться на (одиночный) секундомер перед его запуском. Вызов IConnectableObservable.Connect ()
запускает секундомер. Удаление возвращаемого значения Connect ()
останавливает секундомер.
Стоит отметить, что некоторые наблюдаемые источники горячие по своей природе. Например, события мыши могут срабатывать независимо от того, подписаны ли мы на них. Все подключаемые наблюдаемые объекты в этом сценарии - это общая подписка на одно событие.