RXKotlin-如何接收单个事件



我从一个对象获得回调事件两次,有时三次,但我只需要收集一个最新的对象。RX kotlin有可能吗?

如果内容不同

Observable.create<String> {
it.onNext("One")
it.onNext("Two")
it.onComplete()
}
.lastOrError()
.subscribe { data, error ->
Log.d("Log", data)
}

如果内容相同

Observable.create<String> {
it.onNext("One")
it.onNext("One")
it.onComplete()
}
.distinctUntilChanged()
.subscribe {
Log.d("Log", it)
}

或者将它们组合在一起:

Observable.create<String> {
it.onNext("One")
it.onNext("Two")
it.onNext("Two")
it.onNext("Two")
it.onComplete()
}
.distinctUntilChanged()
.lastOrError()
.subscribe { data, error ->
Log.d("Log", data)
}

如果你的可观察到的物体发射了多次,但你只需要最新的一次,那么你可以使用Observable.blockingLast()来获得该项目,而忽略其余的。

类似地,您可以使用Observable.blockingFirst()只获得第一个结果。

请注意,这两者都会阻塞当前线程。

Single的行为与Observable类似,只是它只能发出单个成功值或错误(不像Observable那样发出"onComplete"通知(。

Single.create<String> {
it.onSuccess("one")
it.onSuccess("two")
it.onSuccess("three")
}.subscribe(
{
//            ON Succuess
},
{
// on error
}
)

最新更新