중복되어 있는 걸 커스텀 공통 함수로 빼고 compose로 활용하는 방법에 대해서 알아보자.
public static <T>ObservableTransformer<T , ImmutableList<T>> toImmutableList() {
return upstream -> upstream.collect(ImmutableList::<T>builder , ImmutableList.Builder::add)
.map(ImmutableList.Builder::build)
//반드시 Single 또는 Observable로 리턴해야한다.
//Flowable -> toFlowable();
.toObservable();
}
일단 공통 함수를 작성한다. 내용은 간단하다.
소스가 들어오면 collect로 imutableList로 변형해서 다시 옵저버 ( or Flowable)로 돌려준다.
그리고 해당 공통 함수에 다시 compose
에 이 추가된 내용을 넣어준다.
Observable.just("Alpha", "Beta", "Gamma", "Delta", "Epsilon")
.compose(toImmutableList())
.subscribe(System.out::println);
Observable.range(1 , 15)
.compose(toImmutableList())
.subscribe(System.out::println);
=================================================================
[Alpha, Beta, Gamma, Delta, Epsilon]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
코드가 줄어든게 보일것이다. 기본적인 활용은 이런식으로 만들 수 있다.
'스터디 > RxJava2' 카테고리의 다른 글
[RxJava] Transform에서 공유 부분 피하기 (0) | 2017.10.22 |
---|---|
[RxJava2] Compose with Parameters (0) | 2017.10.22 |
[RxJava2]Transformer 활용 (0) | 2017.10.22 |
[RxJava2]Flowable을 직접 커스텀해보자. (0) | 2017.10.22 |
[RxJava2]Backpressure와 함께 Flowable를 만들어 보자 (0) | 2017.10.22 |