RxJava多Observable操作详解
1. flatMap的并发限制
在处理Observable时, flatMap() 有一个有趣的特性。实际上, flatMap() 在某些情况下不会请求更多的用户。它有一个简单的重载版本,可以限制对内部流的并发订阅总数,示例如下:
flatMap(User::loadProfile, 10);
这里的 maxConcurrent 参数(即上述代码中的 10 )限制了正在进行的内部Observable的数量。实际应用中,当 flatMap() 接收到前10个 User 时,它会为每个 User 调用 loadProfile() 。但当第11个 User 从上游出现时, flatMap() 甚至不会调用 loadProfile() ,而是会等待任何正在进行的内部流完成。因此, maxConcurrent 参数限制了从 flatMap() 派生的后台任务数量。
需要注意的是, concatMap(f) 在语义上等同于 flatMap(f, 1) ,即 maxConcurrent
超级会员免费看
订阅专栏 解锁全文
579

被折叠的 条评论
为什么被折叠?



