组合FlatMap和SwitchMap

时间:2018-01-20 21:54:56

标签: rx-java2

我有具体要求。我作为用户的来源ID。我需要使用id来下载用户的数据。但是当我稍后收到相同的用户ID时,我需要取消旧的订阅(当没有完成时)并订阅新的Observable。我需要每个id的switchMap运算符,但switchMap只用于一个值。我想同时下载所有用户的数据(并发) - flatMap。

1 个答案:

答案 0 :(得分:3)

使用groupBy拆分ID,在执行switchMap时对每个组使用flatMap

ids.groupBy(v -> v)
.flatMap(g -> g.switchMap(id -> download(id)), false, Integer.MAX_VALUE)

(如果组中的组多于默认并行度,则MAX_VALUE。)