使用compose()和简单的flatMap()有什么区别?

lop*_*ael 11 java android rx-java2

我刚看了杰克沃顿 与RxJava管理国的会议.

他建议以这种方式将事件从视图转换为动作:

Observable<Event> events = RxView.clicks(view).map(__ -> new Event());
ObservableTransformer<Event, Action> action = events -> events.flatMap(/* ... */);
events.compose(action).subscribe();
Run Code Online (Sandbox Code Playgroud)

我想知道这个实现的不同之处:

Observable<Event> events = RxView.clicks(view).map(__ -> new Event());    
Observable<Action> action = events.flatMap(/* ... */);
action.subscribe();
Run Code Online (Sandbox Code Playgroud)

使用compose()带有 ObservableTransformer的 a和flatMap()带有两个Observable 的简单有什么区别?

GVi*_*i82 13

Daniel Lew对这些差异有一个很好的解释.简而言之:

不同之处在于compose()是一个更高级别的抽象:它在整个流上运行,而不是单独发出的项目.

欲了解更多详细信息,看完整的解释在这篇文章中(在指定的部分怎么样flatMap()? )