В чем разница между использованием 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 ответ:
У Дэниела Лью есть хорошее объяснение этим различиям. Короче говоря:
Разница в том, что compose() является абстракцией более высокого уровня: это действует на весь поток,а не на отдельные излучаемые элементы.
Для получения более подробной информации смотрите полное объяснение в этой статье (в разделе под названием Как насчет flatMap ()?)