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

Java 使用compose()和简单的flatMap()有什么区别?,java,android,rx-java2,Java,Android,Rx Java2,我刚刚看了杰克·沃顿主持的会议 他建议通过以下方式将事件从观点转变为行动: Observable<Event> events = RxView.clicks(view).map(__ -> new Event()); ObservableTransformer<Event, Action> action = events -> events.flatMap(/* ... */); events.compose(action).subscribe(); Obs

我刚刚看了杰克·沃顿主持的会议

他建议通过以下方式将事件从观点转变为行动:

Observable<Event> events = RxView.clicks(view).map(__ -> new Event());
ObservableTransformer<Event, Action> action = events -> events.flatMap(/* ... */);
events.compose(action).subscribe();
Observable events=RxView.clicks(view).map(__->new Event());
ObservateTransformer action=events->events.flatMap(/*…*/);
events.compose(action.subscribe();
我想知道这种实现的区别:

Observable<Event> events = RxView.clicks(view).map(__ -> new Event());    
Observable<Action> action = events.flatMap(/* ... */);
action.subscribe();
Observable events=RxView.clicks(view).map(__->new Event());
可观察且简单的
flatMap()
带有两个 可观察到


丹尼尔·卢(Daniel Lew)对这些差异做出了很好的解释。简言之:

区别在于compose()是更高级别的抽象:它是 对整个流进行操作,而不是单独发出的项

有关更多详细信息,请参阅中的完整解释(在名为What About flatMap()的部分中)