Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

혼자 있고 싶네요. 모두 나가주세요.

006. RxJAVA 연산자 :: Observable 생성 본문

타닥타닥/RxJava

006. RxJAVA 연산자 :: Observable 생성

아무것도몰라양 2017. 7. 12. 19:39

참조 : [http://reactivex.io/documentation/operators.html]

RxJAVA의 연산자

거의 모든 연산자들이 Observable을 return하기 때문에 return 값을 그대로 받아서 연산자를 이어나가는 연산자 체인을 가능하게 한다. 메서드 체인을 제공하는 빌더 패턴과는 다르게 Observable의 연산자 체인은 호출 순서 에 따라 결과가 달라진다고 한다.

몇 가지의 연산자를 통해 감을 잡아보도록 하자.


Observable 생성 연산자

create

image create 연산자는 직접적인 코드를 통해 Observable을 만들 수 있게 해준다. 이 연산자를 Observer를 매개변수로 삼는 함수로 넘길 수 있다.이 함수를 사용하여 Observer의 onNext, onError, onCompleted 메서드를 적절히 사용함으로서 Observable처럼 행동하게 해보자.

Observable.create(new Observable.OnSubscribe() {
    @Override
    public void call(Subscriber<? super Integer> observer) {
        try {
            if (!observer.isUnsubscribed()) {
                for (int i = 1; i < 5; i++) {
                    observer.onNext(i);
                }
                observer.onCompleted();
            }
        } catch (Exception e) {
            observer.onError(e);
        }
    }
 } ).subscribe(new Subscriber() {
        @Override
        public void onNext(Integer item) {
            System.out.println("Next: " + item);
        }
        @Override
        public void onError(Throwable error) {
            System.err.println("Error: " + error.getMessage());
        }
        @Override
        public void onCompleted() {
            System.out.println("Sequence complete.");
        }
    });

Next: 1

Next: 2

Next: 3

Next: 4

Sequence complete.

defer

observer가 subscribe를 하기 전까지 Observable을 만들지 않는다. 그리고 새로운 Observable을 각각의 Oberver에개 만들어준다.

image

이러한 특성은 특정 상황에서, 계속 기다리다가 Observable을 생성하는 것이 Observable이 가장 최신의 데이터를 가지고 있음을 보장해줄 수 있다.

empty

아이템을 뱉지는 않지만 onCompleted 메서드를 호출하며 정상적으로 종료되는 Observable을 만든다. 테스트 목적으로 쓰이곤 한다. image

never

아이템을 뱉지는 않지만 종료되지 않는 Observable을 만든다. 테스트 목적으로 쓰이곤 한다. image

error

아이템을 뱉지는 않고 종료될 때 onError 메서드를 호출하는 Observable을 만든다. 테스트 목적으로 쓰이곤 한다. ReactiveX에서 말하는 Throw 와 같으며, RxJava에서는 다음과 같이 쓰인다. error(종료하고 싶은 Observable) image

just

특정한 아이템을 뱉는 Observable을 만든다. 아이템을 그 아이템을 결과로 뱉는 Observable로 변환하는 것이라고 한다. From과 비슷하지만 Just는 단순히 데이터를 뱉는데에 반해 From은 그 과정에서 기존의 데이터가 조작되는 듯 하다. 주의할 것은 null을 넘겨주게 되면 빈 Observable을 반환하는 것이 아니라 null을 반환한다고 한다. image

repeat

특정한 아이템을 여러번 뱉는 Observable을 만든다. 아이템을 반복적으로 뱉어내며, repeat(2)와 같이 횟수를 조절 할 수 있는 것 같다. Scheduler도 매개변수로 넘겨 줄 수 있다고 하는데, 잘 모르므로 패스하도록 하자. image

start

함수의 실행 결과를 뱉어내는 Observable을 만든다.Start 연산자로 그룹지어진 연산자들은 그것들이 Observable처럼 행동하게 하여 Observable 체인에 연속적으로 사용 가능 하도록 한다. image

'타닥타닥 > RxJava' 카테고리의 다른 글

005. Connectable Observable  (0) 2017.07.05
004. RxJava Subject란?  (0) 2017.07.05
003. Observable : Hot, Cold?  (0) 2017.07.05
002. RxAndroid 준비하기  (0) 2017.07.05
001. Reactive Programming/RxJava 란?  (0) 2017.07.05
Comments