RxJava:高级应用与并发处理
1. flatMap() 与 identity 函数的应用
在某些场景下,我们可以使用 flatMap() 结合 identity 函数来替代中间对。示例代码如下:
Observable<Ticket> ticket = flight
.zipWith(passenger, this::rxBookTicket)
.flatMap(obs -> obs);
这里的 obs -> obs 这个 lambda 表达式看似没有做任何事情,但要知道 flatMap() 会对 Observable 内的每个值应用一个函数。在这个例子中,该函数以 Observable 作为参数。与 map() 不同,flatMap() 不会将结果直接放入结果流中,而是将返回值(类型为 Observable )“扁平化”,最终得到一个 Observable 而非 Observable >。在处理调度器时,flatMap() 操作符会变得更强大。
2. Observable.subscribeOn() 的使用场景
可能有人会认为 subscribeOn() 是 RxJava 中处理并发的合适工具。这个操作符确实有效,但实际上我们不应该频繁看到它(以及后续会介绍的 observeOn())的使用。在现实中,Observables 通常来自异步源,因此根本不需要自定义调度。在一些示例中使用 subscribeOn() 是为了明确展示如何选择性地将现有应用升级为使用响应式原则
超级会员免费看
订阅专栏 解锁全文
98

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



