Android RxJava1 concatMap导致缺少背压异常
我正在尝试使用Android RxJava1 concatMap导致缺少背压异常,android,kotlin,rx-java,Android,Kotlin,Rx Java,我正在尝试使用concatMap转换可观测值,因为顺序对我的案例很重要 @Test fun load_data() { val sub = TestSubscriber<Long>() var s = BehaviorSubject.create<Long>() s.concatMap { Observable.timer(it, TimeUnit.MILLISECONDS) } .take(4) .su
concatMap
转换可观测值,因为顺序对我的案例很重要
@Test
fun load_data() {
val sub = TestSubscriber<Long>()
var s = BehaviorSubject.create<Long>()
s.concatMap {
Observable.timer(it, TimeUnit.MILLISECONDS)
}
.take(4)
.subscribe(sub)
s.onNext(5)
s.onNext(6)
s.onNext(7)
s.onNext(8) //rx.exceptions.MissingBackpressureException
sub.awaitTerminalEvent(500, TimeUnit.MILLISECONDS)
sub.assertNoErrors()
}
@测试
乐趣加载_数据(){
val sub=TestSubscriber()
var s=BehaviorSubject.create()
s、 海图{
可观察计时器(it,TimeUnit.ms)
}
.take(4)
.订阅(sub)
s、 onNext(5)
s、 onNext(6)
s、 onNext(7)
s、 onNext(8)//rx.exceptions.MissingBackpressureException
sub.awaitTerminalEvent(500,时间单位毫秒)
子资产无错误()
}
我已经将实际数据加载更改为Observable.timer()
,以简化示例并使其更易于复制
我在appBehaviorSubject
中使用将UI操作与rx链接起来
从中,特别是从大理石图中,我希望它将项目存储在队列中并逐个转换它们
然而,concatMap
似乎只将队列大小设置为2个项目。添加更多项目会导致缺少背压异常
因此,我有以下问题:
concatMap
的队列大小为2而不是RxRingBuffer.size
as
其他运营商有吗李>
onBackpressure*
操作符吗
调用concatMap
以防止missingBackpressureeException
例外在回答这些问题之前,请考虑切换到RXJava 2,这不是“代码>可观察的< /代码>问题。
为什么concatMap的队列大小为2,而不是像其他运算符那样的RxRingBuffer.size 操作员一次运行一个可观察的
,没有理由预先预取超过1个
在调用concatMap之前,我是否应该添加onBackpressure*操作符,以防止遗漏backpressureeexception异常
是。是的,rxJava2不应该缺少BackPressureException,但是由于代码库太大,迁移将非常耗时。