bei*_*rad 2 reactivex rx-java2
我知道DisposableObserver已经实现了Observer和Disposable。标记onSubscribe()方法为final并提供onStart()而不是它。
但我不明白这两者在行动上有什么区别。我什么时候应该使用Observeror DisposableObserver?
能否请您谈谈使用它们的优缺点?
观察者的普通 onSubscribe 方法可以调用多少次,只要您使用同一个观察者。但是 withDisposableObserver onSubscibe方法只能被调用一次,这意味着你只能使用DisposableObserver一次。如果您将单个对象传递DisposableObserver给两个流,它将抛出异常并快速关闭它们。此逻辑已在onSubscribe()此类中实现,因此您无法覆盖它。但是如果您需要onSubscribe()回调,您可以覆盖onStart()相同的方法。
这个类的用法可以如下。
根据文档,一个 DisposableObserver 是:
一个抽象的观察者,通过实现 Disposable 允许异步取消。
换句话说,这意味着您可以在观察者方法中使用一次性行为。就像调用dispose()在onNext()。
Observable.just(1, 2, 3, 4, 5)
.map {
"$it"
}
.subscribe(object : DisposableObserver<String>(){
override fun onComplete() {
}
override fun onNext(t: String) {
println("first item only= $t")
//we can dispose this stream right in the observer methods
dispose()
}
override fun onError(e: Throwable) {
}
})
Run Code Online (Sandbox Code Playgroud)
人们甚至可以结合DisposableObserver使用subscribeWith()以获得与普通观察者几乎相同的行为。
val disposableObserver = object : DisposableObserver<String>() {
override fun onComplete() {
}
override fun onNext(t: String) {
println("first item only= $t")
//we can dispose this stream right in the observer methods
dispose()
}
override fun onError(e: Throwable) {
}
}
val disposable: Disposable = Observable.just(1, 2, 3, 4, 5)
.map {
"$it"
}
.subscribeWith(disposableObserver)
disposable.dispose()
Run Code Online (Sandbox Code Playgroud)
这个和 RX-Java 中的许多其他类和运算符都可以简化 RX 的使用,并且可以根据您想要如何使用库来选择它们中的任何一个。
| 归档时间: |
|
| 查看次数: |
550 次 |
| 最近记录: |