본문 바로가기

Language/RxJava

(17)
[RxJava] 5장. 스케줄러 스케줄러 비동기로 동작할 수 있도록 이용한다. subscribeOn, observeOn에 스케줄러를 지정하여 데이터의 흐름이 발생하는 스레드와, 처리된 결과를 구독자에게 전달하는 스레드를 분리할 수 있다. String[] data = {"1", "2", "3"}; Observable source = Observable.fromArray(data) .doOnNext(data -> Log.d("Original data = " + data)) .subscribeOn(Schedulers.newThread()) .observeOn(Schedulers.newThread()) .map(data -> "#" + data); source.subscribe(Log::i); CommonUtils.sleep(1000); //..
[RxJava] 4장. 리액티브 연산자의 활용 4 - 조건 연산자 및 기타 연산자 조건 연산자 Observable의 흐름을 제어하는 역할. amb() : 둘 중 어느 것이든 먼저 나오는 Observable을 채택 takeUntil(other) : other Observable에서 데이터가 발행되기 전까지만 현재 Observable을 채택 skipUntil(other) : other Observable에서 데이터가 발행될 때 까지 현재 Observable을 무시 all() : Observable에 입력되는 값이 모두 특정 조건에 맞을 때만 true를 발행. 조건에 맞지 않는 값이 있으면 바로 false를 발행. amb() 함수 여러 개의 Observable 중 하나의 Observable을 선택하는데, 선택 조건은 가장 먼저 데이터를 발행하는 Observable이다. String[] nu..
[RxJava] 4장. 리액티브 연산자의 활용 3 - 결합 연산자 결합 연산자 여러개의 Observable을 내가 원하는 Observable로 결합하는데 사용하는 연산자. zip : Observable에서 데이터를 모두 새로 발행했을 때 그것을 합해준다. combineLatest : 처음에 각 Observable에서 데이터를 발행한 후에는 어디에서 값을 발행하던 항상 최신 값으로 갱신. merge : 최신 데이터 여부와 상관없이 각 Observable에서 발행하는 데이터를 그대로 출력. concat : 입력된 Observable을 Observable 단위로 이어 붙여준다. zip() 함수 각각의 Observable을 모두 확용해 2개 혹은 그 이상의 Observable을 결합한다. 최대 9개의 Observable을 결합할 수 있다. A, B 2개의 Observable을..
[RxJava] 4장. 리액티브 연산자의 활용 2 - 변환 연산자 변환 연산자 만들어진 데이터 흐름을 원하는 대로 변형할 수 있는 연산자. concatMap() 함수 flatMap() 과 매우 비슷하다. flatMap의 경우 인터리빙(interleaving) 현상이 발생할 수 있기 때문에 데이터의 처리가 순차적으로 진행되지 않을 가능성이 있다. 하지만, concatMap의 경우 먼저 들어온 데이터 순서대로 처리하여 결과를 낼 수 있도록 보장해준다. String[] num = {"1", "2", "3"}; Observable source = Observable.interval(100L, TimeUnit.MILLISECONDS) .map(Long::intValue) // interval에서 발행되는 값은 Long 타입이므로, Integer 객체로 변환 .map(index ..
[RxJava] 4장. 리액티브 연산자의 활용 1 - 생성 연산자 생성 연산자 : just(), fromXXX(), create() ... 변환 연산자 : map(), flatMap(), groupBy(), buffer() ... 필터 연산자 : filter(), take(), skip() ... 결합 연산자 : zip(), concat(), merge(), combineLatest() 조건 연산자 : takeUntil(), all() ... 에러 처리 연산자 : onErrorReturn(), retry() ... 기타 연산자 : subscribe(), reduce(), observeOn() ... 생성 연산자 데이터 흐름을 만드는 연산자. Observable을 만드는 연산자라고 생각하면 된다. interval() 함수 일정 시간 간격으로 데이터 흐름을 생성하며, 현재..
[RxJava] 3장. 리액티브 연산자 입문 생성 연산자 데이터 흐름을 만들어내는 함수 create, just, fromArray, interval ... 변환 연산자 어떤 입력을 받아서 원하는 출력 결과를 내는 전통적인 의미의 함수 map, flatmap ... 필터 연산자 입력 데이터 중 원하는 데이터만 걸러낸다 filter, first, take ... 합성 연산자 여러 Observable을 조합하는 역할 오류처리 연산자 onErrorReturn, onErrorResumeNext, retry ... 유틸리티 연산자 비동기 프로그래밍을 지원 subscribeOn, observeOn ... ​ RxJava의 제네릭 함수형 인터페이스 Predicate : boolean sample(T t). t 값을 받아서 참이나 거짓을 반환 Consumer : ..
[RxJava] 2장. Observable 처음 만들기 -2 Single 클래스 Observable 클래스는 데이터를 무관하게 발행할 수 있지만, Single 클래스는 오직 1개의 데이터만 발행하도록 한정한다. 데이터 하나가 발행과 동시에 종료된다는 특징을 가지고 있다. onNext와 onComplete 가 onSuccess로 통합되어 onSuccess와 onError 함수로 구성된다. Single source = Single.just("Single").subscribe(System.out::println); Single 클래스는 Observable에서도 사용할 수 있는 다양한 방법이 존재한다. Observable에서 Single 객체를 생성해서 사용하면 되는데, Observable 특성상 한 개 이상의 데이터 값을 발행할 수 있는데, Single 객체를 생성할 ..
[RxJava] 2장. Observable 처음 만들기 -1 Observable 클래스. 옵서버 패턴을 구현. 객체의 상태 변화를 관찰하는 관찰자 목록을 객체에 등록하여 상태에 변화가 있을 때마다 메서드를 호출. 라이프 사이클은 존재하지 않음. Observable은 세 가지 알림을 구독자에게 전달한다. onNext() : Observable이 데이터 발행을 알림. onComplete() : 모든 데이터의 발행을 완료했음을 알림. 단 한 번 만 발생하여 해당 이벤트가 발생한 후에 onNext()는 발생하면 안 된다. 마블 다이어그램에서 파이프(|)로 표시된다. onError() : Observable에서 어떤 이유로 에러가 발생했음을 알림. 발생 후에 onNext(), onComplete()는 발생하지 않음. 즉, onError 호출 시 Observable의 실행을..