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

15

我刚刚观看了由Jake Wharton所主持的会议 《使用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();

使用带有ObservableTransformercompose()和使用两个Observable的简单flatMap(),有何不同之处?

1个回答

17

有一篇来自Daniel Lew的好文章解释了二者之间的差异。简而言之:

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

如需更多详细信息,请参阅本文中的完整解释(名称为flatMap()怎么样?部分)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接