我有具体要求。我作为用户的来源ID。我需要使用id来下载用户的数据。但是当我稍后收到相同的用户ID时,我需要取消旧的订阅(当没有完成时)并订阅新的Observable。我需要每个id的switchMap运算符,但switchMap只用于一个值。我想同时下载所有用户的数据(并发) - flatMap。
答案 0 :(得分:3)
使用groupBy
拆分ID,在执行switchMap
时对每个组使用flatMap
:
ids.groupBy(v -> v)
.flatMap(g -> g.switchMap(id -> download(id)), false, Integer.MAX_VALUE)
(如果组中的组多于默认并行度,则MAX_VALUE。)