如何解决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,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
}
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。