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

2022-09-04 02:45:12

我刚刚观看了Jake Wharton的The State of Management State with RxJava的会议。

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

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

我想知道这个实现的区别:

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

将 a 与 ObservableTransformer 一起使用和将简单与两个 Observable 一起使用有什么区别?compose()flatMap()


答案 1

丹尼尔·卢(Daniel Lew)对差异有一个很好的解释。总之:

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

有关更多详细信息,请查看本文中的完整说明(在名为“FlatMap()怎么样??”的部分中。)


答案 2

推荐