微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

RXKotlin-如何接收单个事件

如何解决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 举报,一经查实,本站将立刻删除。