В чем разница между использованием compose() и простой flatMap()?


Я только что смотрел конференцию Джейка Уортона. состояние управления состоянием с помощью 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();

В чем разница между использованием compose() с помощью ObservableTransformer и простой flatMap() с двумя Наблюдаемо?

1 5

1 ответ:

У Дэниела Лью есть хорошее объяснение этим различиям. Короче говоря:

Разница в том, что compose() является абстракцией более высокого уровня: это действует на весь поток,а не на отдельные излучаемые элементы.

Для получения более подробной информации смотрите полное объяснение в этой статье (в разделе под названием Как насчет flatMap ()?)