RxJava
-
[RxJava] SchedulerReactiveX 2021. 5. 1. 10:49
스케줄러 개념 스케줄러는 Observable만큼이나 중요한 RxJava의 핵심요소이다. Observable 연산자 체인에 멀티스레딩을 적용하고 싶다면, 특정 스케줄러를 사용해서 연산자(또는 특정 Observable)를 실행하면 된다. SubscribeOn 연산자는 다른 스케줄러를 지정해서 Observable이 처리해야 할 연산자들을 실행시킨다. ObserveOn 연산자는 Observable이 옵저버에게 알림을 보낼때 사용할 스케줄러를 명시한다. 스케줄러를 별로도 지정하지 않으면 main 스레드에서 동작을 실행한다. 아래 그림이 보여주듯, SubscribeOn 연산자는 Observable이 연산을 위해 사용할 스레드를 지정하며, 연산자 체인 중 아무 곳에서 호출해도 문제되지 않는다. 하지만, Observe..
-
[RxJava] Single, MaybeReactiveX 2021. 5. 1. 10:14
Single Single은 Obvservable의 한 형태이지만, 항상 한 가지 값 또는 오류 알림 둘 중 하나만 배출한다. Single을 구독할 때는 Observable을 구독할 때 사용하는 세 개의 메서드(onNext, onError, onCompleted) 대신 다음의 두 메서드만 사용할 수 있다. onSuccess - Single은 자신이 배출하는 하나의 값을 이 메서드를 통해 전달한다. onError - Single은 항목을 배출할 수 없을 때 이 메서드를 통해 Throwable 객체를 전달한다. Single은 발행과 동시에 종료하며 종료시 onSuccess가 호출된다. Observable과 마찬가지로, Single도 다양한 연산자들을 제공한다. 이 중 어떤 연산자들은 Observable과 Si..
-
[RxJava] Operators(연산자)ReactiveX 2021. 4. 30. 11:15
ReactiveX를 지원하는 언어별 구현체들은 다양한 연산자들을 제공하는데, 이 중에는 공통적으로 제공되는 연산자도 있지만 반대로 특정 구현체에서만 제공하는 연산자들도 존재한다. 연산자 체인 거의 모든 연산자들은 Observable 상에서 동작하고 Observable을 리턴한다. 연산자 체인에서 각각의 연산자는 이전 연산자가 리턴한 Observable을 기반으로 동작하며 동작에 따라 Observable을 변경한다. 먼저 실행된 연산자가 리턴한 Observable을 기반으로 다음 연산자가 동작하기 때문에 Observable의 연산자 체인은 원본 Observable과 독립적으로 실행될 수 없고 순서대로 실행되어야 한다. 카테고리별 연산자 Observable 생성 - 새로운 Observable을 만드는 연산자..
-
[RxJava] ObservableReactiveX 2021. 4. 29. 16:37
Observable ReactiveX에서는 Observable을 구독하는 Observer가 존재하고, Observable이 이벤트를 발생시키면 Observer의 관찰자가 그 순간을 감지하고 준비된 연산을 실행시켜 결과를 리턴하는 메커니즘 때문에, observable을 구독한다라고 표현한다. Subscribe 메서드를 통해 Observer와 Observable을 연결한다. Observable은 다음의 3가지 이벤트를 사용하여 동작한다. onNext Observable은 새로운 항목들을 배출할 때마다 이 메서드를 호출한다. 이 메서드는 Observable이 배출하는 항목을 파라미터로 전달 받는다. onError Observable은 기대하는 데이터가 생성되지 않았거나 다른 이유로 오류가 발생할 경우 이 메서..
-
[RxJava] ReactiveReactiveX 2021. 4. 27. 16:20
ReactiveX, Reactive Programing ReactiveX(Reactive Extensions)는 관찰 가능한 스트림을 사용하는 비동기 프로그래밍을 위한 API Reactive Programing(반응형 프로그램)은 주변의 환경과 끊임없이 상호 작용을 하는, 비동기적 데이터 스트림을 처리하는 프로그래밍을 말한다. 스트림(streams)이란? - 변수, 사용자 입력, 속성, 캐시, 데이터 구조 등의 데이터가 시간 순서에 의해 전달되는 이벤트입니다 - 스트림은 다른 스트림에 대한 입력으로 사용할 수 있고 여러 스트림을 다른 스트림에 대한 입력으로 사용할 수 있다. - 두 개의 스트림을 병합(merge)할 수도 있고 관심있는 이벤트만 있는 다른 스트림을 가져오도록 스트림을 필터링(filterin..