본문 바로가기
Programming 개발은 구글로/JAVA[Android]

[RxJava] Maybe 개념 이해

by 40대직장인 2022. 6. 12.

Maybe

1.개념

Maybe도 Observable의 또 다른 형태이다. Maybe는 최대 데이터 하나를 발행할 수 있으며 추가로 데이터 없이도 완료할 수도 있다.

 

Single에 onComplete가 추가된 형태로, 총 3가지 알림을 보낸다.

  • onSuccess : 데이터 하나를 발행함과 동시에 종료
  • onError : 에러가 발생했음을 알림
  • onComplete : 데이터 발행이 완료됐음을 알림

 

 

2. 예제

Maybe도 Observable이나 Single과 같이 just와 create 연산자가 존재한다.

 

예제에서는 create를 통해 Maybe를 생성하였다.

Maybe.create(new MaybeOnSubscribe<String>() {
    @Override
    public void subscribe(@NonNull MaybeEmitter<String> emitter) throws Throwable {
        emitter.onSuccess("Maybe 1");
        emitter.onSuccess("Maybe 2");
        emitter.onComplete();
    }
}).subscribe(new Consumer<String>() {
    @Override
    public void accept(String s) throws Throwable {
        System.out.println("onSuccess : "+s);
    }
}, new Consumer<Throwable>() {
    @Override
    public void accept(Throwable throwable) throws Throwable {

    }
}, new Action() {
    @Override
    public void run() throws Throwable {
        System.out.println("complete");
    }
});

Result:
onSuccess : Maybe 1 // 최대 1개
 
Maybe는 최대 데이터 1개를 발행하므로 여러 개의 데이터를 전달해도 단 하나의 데이터만 발행되고 종료됨을 볼 수 있다. 또한 onSuccess가 데이터를 발행함과 동시에 종료되므로 이후에 나온 onComplete는 실행되지 않는다.
 
 
 
 
관련 글: Maybe, Single, Completable

 

2022.06.13 - [Programming Android[Java]] - [RxJava] Completable 개념 이해

 

 

 

 

댓글