我从一个对象获得了两次回调事件,有时三次,但我只需要收集一个将是最新的对象。RX kotlin 可以吗?
问问题
388 次
3 回答
1
如果内容不同:
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)
}
于 2020-10-14T05:18:39.033 回答
0
Single 的行为与 Observable 类似,只是它只能发出一个成功的值或一个错误(没有像 Observable 那样的“onComplete”通知)。
Single.create<String> {
it.onSuccess("one")
it.onSuccess("two")
it.onSuccess("three")
}.subscribe(
{
// ON Succuess
},
{
// on error
}
)
于 2021-04-26T10:15:27.457 回答
0
如果您的 observable 多次发射,但您只需要最新的一个,那么您可以使用Observable.blockingLast()
该项目来获取该项目并忽略其余部分。
同样,您可以让用户Observable.blockingFirst()
只获得第一个结果。
请注意,这两个都会阻塞当前线程。
于 2020-10-14T05:06:49.897 回答