IConnectableObservables в Rx

Кто-то может объяснить различия между Заметным и ConnectableObservable? Документация Расширений Rx очень редка, и я не понимаю, в каких случаях ConnectableObservable полезен.

Этот класс используется в методах Воспроизведения/Чернослива.

38
задан Enigmativity 19 October 2010 в 00:56
поделиться

1 ответ

Краткий ответ:

IConnectableObservable представляет собой ожидающий горячий наблюдаемый объект, который может использоваться несколькими подписчиками. Вызов IConnectableObservable.Connect () вызывает изменение на горячий (подписывается на наблюдаемый холодный источник)

Длинный ответ:

A холодный наблюдаемый (например, Observable. Диапазон ) воспроизводит последовательность для каждого абонента. Это аналог секундомера, где каждому подписчику предоставляется свой секундомер. Подписчик запускает секундомер, подписавшись, и секундомер останавливается (и сбрасывается), как только наблюдатель прекращает наблюдение.

горячая наблюдаемая разделяет последовательность между всеми подписчиками. Это аналогично тому, что есть один секундомер, и всем подписчикам предоставляется одно и то же время, независимо от того, когда они начали смотреть.

IObservable.Publish преобразует холодное наблюдаемое в горячее наблюдаемое, но возвращает IConnectableObservable . Это позволяет подписчикам подписаться на (одиночный) секундомер перед его запуском. Вызов IConnectableObservable.Connect () запускает секундомер. Удаление возвращаемого значения Connect () останавливает секундомер.

Стоит отметить, что некоторые наблюдаемые источники горячие по своей природе. Например, события мыши могут срабатывать независимо от того, подписаны ли мы на них. Все подключаемые наблюдаемые объекты в этом сценарии - это общая подписка на одно событие.

61
ответ дан 27 November 2019 в 03:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: