Konular: https://github.com/JakeWharton/RxRelayRxJava Röle vs Jake Warthon bu kütüphanenin amacını anlamaya çalışıyorum
Temelde: onComplete veya OnError çağrı yeteneği olmadan haricinde bir Konusu. Konular zarar verici bir şekilde durumsaldır: bir onComplete veya onError aldıklarında artık veri taşımak için kullanılamazlar.
Fikrim var, geçerli bir kullanım durumu, ancak yukarıda varolan konuları kullanmanın kolay olduğu anlaşılıyor.
1. konuya değil ileri errors
/completions
olayları yapın:
`observable.subscribe({ subject.onNext(it) }, { log error/throw exception },{ ... })`
2.
, konuyu açığa senin yöntem imzası yerine gözlemlenebilir dönmek yapmayın.fun(): Observable<> { return subject }
Açıkçası burada bir şey eksik ve ben ne olduğunu üzerinde Çok merak değilim!
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
}
Teşekkürler akarnokd, Bilinmesi gereken bir şey eksik değilim :) # 2 ile ilgili olarak eğer konuyu sarmalayıcı sınıfının içine koyarsanız, bir yöntemi kabul edebilirsiniz (item) {subject.omNext (item)}. Ve Konu özel bir alan kalır – feresr
Bunun tek sebebi olduğuna emin misiniz? Sadece yeni başlayanlardan kaçınmak için yepyeni bir kütüphane oluşturmak bir hata gibi görünüyor. Yani projelerinize aktarıyor – feresr
[Bu] kastediyorsunuz (https://github.com/JakeWharton/RxRelay/issues/30)? İç standartlar çoğunlukla standart Konular ile aynı olduğundan ve terminal olayının kaldırılması, yazdıklarımızla birlikte bizi bırakan önemli bir performans kazancı değildir. – akarnokd