我正在尝试使用concatMap
转换Observable,因为顺序对我的情况很重要。
@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()
}
我已将实际数据加载更改为Observable.timer()
,以简化示例并使其更容易重现。
我在应用BehaviorSubject
中使用以将操作与rx链接
从documentation开始,尤其是从大理石图中,我希望它会将项目存储在队列中并逐个转换。
但似乎concatMap
队列的大小只设置为2个项目。添加更多项目会导致MissingBackpressureException
所以我有以下问题:
concatMap
的队列大小为2而不是RxRingBuffer.SIZE
其他运营商有? onBackpressure*
运算符
致电concatMap
以阻止MissingBackpressureException
异常?