RxCocoa - почему PublishRelay не имеет метода asDriver ()? - PullRequest
0 голосов
/ 29 января 2019

В RxCocoa мне было интересно, почему PublishRelay не имеет метода asDriver (), такого как BehaviorRelay?В настоящее время, если я хочу преобразовать publishRelay в драйвер, я должен указать, что возвращать в случае ошибки, которая кажется странной, учитывая, что реле не могут генерировать ошибки ...

1 Ответ

0 голосов
/ 30 января 2019

Эти две версии ...Relay используются для моделирования различных концепций:

  • BehaviorRelay представляет Состояние
  • PublishRelay представляет События

Имеет смысл воспроизвести State , следовательно, BehaviorRelay воспроизводит свое последнее значение.

Это имеет меньше смысла (нет?)воспроизведение События , следовательно, PublishRelay не воспроизводит свое последнее значение.

Учитывая это, имеет смысл преобразовать BehaviorRelay в Driver, поскольку драйвер управляет приложением, используя State .Стратегия совместного использования для BehaviorRelay и Driver заключается в том, чтобы делиться побочными эффектами и воспроизводить последнее значение , пока подключено хотя бы одно наблюдаемое.

A PublishRelay лучше представить какSignal, так что вы, вероятно, можете использовать Signal для эмиссии.Стратегия совместного использования в этом случае будет , а не , воспроизводить последнее значение, но все же будет делиться побочными эффектами, пока подключено хотя бы одно наблюдаемое.

(я строю этот ответ, используя этот отличный комментарий из @ freak4pc в репозиторий RxSwift)

...