我想通过杰克Warthon了解这个库的目的: https://github.com/JakeWharton/RxRelayRxJava继电器VS主题
基本上是:除了没有来电的onComplete或 onError的能力的主题。受试者处于有害的状态:当他们收到onComplete或onError时,他们不再可用于移动数据。
我明白了,这是一个有效的使用案例,但上述使用现有主题似乎很容易实现。
不要转发errors
/completions
事件的主题:
`observable.subscribe({ subject.onNext(it) }, { log error/throw exception },{ ... })`
2.不要暴露的问题,让你的方法签名返回一个可观察的来代替。
fun(): Observable<> { return subject }
我显然失去了一些东西,我它是什么非常珍玩!
class MyPublishRelay<I> : Consumer<I> {
private val subject: Subject<I> = PublishSubject.create<I>()
override fun accept(intent: I) = subject.onNext(intent)
fun subscribe(): Disposable = subject.subscribe()
fun subscribe(c: Consumer<in I>): Disposable = subject.subscribe(c)
//.. OTHER SUBSCRIBE OVERLOADS
}
谢谢akarnokd,很高兴知道我没有遗漏任何东西:)关于#2,如果你把你的主题放在包装类中,你可以有一个方法accept(item){subject.omNext(item)}。而主题仍然是一个私人领域 – feresr
你确定这是唯一的原因,但?为了避免初学者的错误而创建一个全新的图书馆看起来像是矫枉过正。所以将它导入到你的项目中 – feresr
你的意思是[this](https://github.com/JakeWharton/RxRelay/issues/30)?由于内部结构大部分与标准主体相同,并且取消终端事件处理并不是一个重要的性能优势,这使我们得到了我所写的内容。 – akarnokd