Rx java 如何在flatMapSingle中指定maxConcurrency?
我发现了一个重载Rx java 如何在flatMapSingle中指定maxConcurrency?,rx-java,Rx Java,我发现了一个重载flatMap,它采用了maxConcurrency参数 为了限制flatMap中的并发性,我们的想法是通过request()预先请求maxConcurrency量,然后每当源代码完成时,请求(1)额外的 有没有办法在flatMapSingle中使用它 playersIdsObservable .distinct() .flatMapSingle(playerId -> dao.players().loadPlayerSRx(playerId)) 我找到了
flatMap
,它采用了maxConcurrency参数
为了限制flatMap中的并发性,我们的想法是通过request()预先请求maxConcurrency量,然后每当源代码完成时,请求(1)额外的
有没有办法在flatMapSingle中使用它
playersIdsObservable
.distinct()
.flatMapSingle(playerId -> dao.players().loadPlayerSRx(playerId))
我找到了一个buffer()运算符,它与我想要的有点类似。不存在允许您指定最大并发性的
Observable.flatMapSingle
重载。但是,普通的可观察的.flatMap
确实有这样的重载和可流动的.flatMapSingle
也支持限制并发性。这提供了两种选择:
1) 将单个
转换为可观察的:
playersIdsObservable
.distinct()
.flatMap(playerId ->
dao.players().loadPlayerSRx(playerId).toObservable(), maxConcurrency)
2) 使用缓冲背压策略转换为可流动的
:
playersIdsObservable
.distinct()
.toFlowable(BackpressureStrategy.BUFFER)
.flatMapSingle(playerId ->
dao.players().loadPlayerSRx(playerId), false, maxConcurrency)
不存在允许您指定最大并发性的
Observable.flatMapSingle
重载。但是,普通的可观察的.flatMap
确实有这样的重载和可流动的.flatMapSingle
也支持限制并发性。这提供了两种选择:
1) 将单个
转换为可观察的:
playersIdsObservable
.distinct()
.flatMap(playerId ->
dao.players().loadPlayerSRx(playerId).toObservable(), maxConcurrency)
2) 使用缓冲背压策略转换为可流动的
:
playersIdsObservable
.distinct()
.toFlowable(BackpressureStrategy.BUFFER)
.flatMapSingle(playerId ->
dao.players().loadPlayerSRx(playerId), false, maxConcurrency)