Android 개발/RxJava, RxAndroid

RxJava ignoreElements() 연산자에 대한 이해

Developer88 2024. 10. 30. 18:04
반응형

오늘은 RxJava의 연산자 중,

ignoreElements()에 대해서 알아보겠습니다.

 

1. ignoreElements()

연산자 이름만 보면 이해하기가 쉬운데요.

Observable 에서 흘러나오는,

데이터를 모두 무시하는 연산자입니다.

 

그런데, 그냥 무시할꺼면 왜 사용할까요?

흘러나오는 데이터가 필요없기 때문입니다.

단순히 완료 되었는지,

또는 오류가 발생했는지만,

알고 싶을 때 사용합니다.

 

ignroeElements()를 사용해 주면, 

원래의 Observable이 Completable로 변환되는데요.

Completable은,

onComplete 또는 onError 이벤트만 발생시키는,

특별한 유형의 Observable입니다.

 

Observable<Integer> numbers = Observable.range(1, 5);

numbers.ignoreElements()
  .subscribe(
    () -> System.out.println("Completed!"),
    error -> System.out.println("Error: " + error)
  );

 

 

위 코드에서는,

Observable에서 어떤 값이 흘러나오더라도,

완료와 에러만 받아서 subscribe해 주면 됩니다.

 

2. 예제 코드

좀 더 실용적인 예제코드를 보면서 이를 더 이해해 보겠습니다.

 

아래는 안드로이드에서 사용된 Java 코드인데요.

진행순서는 다음과 같습니다.

  • RoomDB에 insert()를 실행 (TestDao.insert())
  • andThen()연산자가 순차적으로 실행되도록 함
  • ignoreElements가 Completable을 방출해 줍니다.
  • onComplete와 onError에 대해서 구독(subscribe)

 

Completable.fromAction(() -> TestDao.insert(mAlarmSettingData))
        .andThen(TestUtil.doSomething()
            .ignoreElement())
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(
            () -> Log.d("Test", "test has been successful"),
            throwable -> Log.e("Test", "Error while testing", throwable)
        )

 

이상으로 RxJava의 ignoreElement()에 대해서 알아보았습니다.

728x90