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)