<RxJava>just

진섭·2023년 5월 24일
0

RxJava

목록 보기
2/20
post-thumbnail

📌 just 연산자란?

인자로 넣은 데이터를 차례로 발행하려고 Observable을 생성합니다. 특정 값이나 미리 정의된 값 집합을 발행하는 Observable을 생성하는 데 주로 사용된다.

📌 just 사용법

백문이 불여일타 보는 거 보다는 직접 코드를 쳐보시면 이해가 가실 겁니다😃

📚 단일 항목을 발행하는 Observable 생성

  • 단일 항목을 발행하는 Observable을 생성합니다.
  • subscribe() 에서는 생성한 Observable을 구독하고, 발행된 각 항목을 println 함수를 통해 출력합니다.
  • .let { -> } 이부분은 "The result of subscribe is not used" 경고 메시지가 떠서 .let { -> }으로 경고 메시지를 무시하였습니다. 경고의 의미는 구독 결과를 사용하지 않는다는 의미입니다. 그래서 let 함수를 이용해 람다 식을 인자로 받아 그 람다 식을 실행한 뒤 결과를 반환해 경고를 무시하였습니다.
    // 단일 항목을 발행하는 Observable 생성
    Observable.just("안녕하세요, RxJava!")
        .subscribe(::println)
        .let { _ -> }

📚 여러 항목을 발행하는 Observable 생성

단일 항목을 발행하는 Observable과 똑같지만 .just() 함수에서 파라미터 부분에서 여러 개를 넣어주면 여러 항목을 발행할 수 있어요. 파라미터 부분을 확인해 보니 10개까지 넣을 수 있을 거 같아요

    Observable.just("치토스", "포카칩", "빼빼로")
        .subscribe(::println)
        .let { _ -> }

📚Observable을 사용하여 데이터를 발행하고, Observer를 통해 데이터를 처리하는 예제

  • 다음은 ObservableObserver를 구독시키고 Observable은 데이터를 발행하고, Observer는 해당 데이터를 처리를 하는 예제입니다.
  • Observer 인터페이스를 구현한 익명 클래스를 만들어 onSubscribe(), onError(), onComplete(), onNext()를 처리를 해줄 수 있어요.
  • 익명 클래스는 Observer가 구독(subscribe)을 시작할 때 호출되요
  class MainActivity : AppCompatActivity() {
    companion object {
        const val TAG ="MainActivity"
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 정적인 값을 방출하는 Observable을 생성
        // just : 인자로 넣은 데이터를 차례로 발행하려고 Observable을 생성한다.
        val observable = Observable.just(1,2,3,4,5)
        val observer = object : Observer<Int> {

            //  Observer가 구독(subscribe)을 시작할 때 호출됩니다
            override fun onSubscribe(d: Disposable) {
                Log.d(TAG,"onSubscribe")
            }

            // 에러가 발생했을 때 호출
            override fun onError(e: Throwable) {
                Log.d(TAG,"onError ${e.toString()}")
            }
            // Observer가 모든 데이터를 성공적으로 처리하고 완료되었을 때 호출
            override fun onComplete() {
                Log.d(TAG,"onComplete")
            }
            //  Observable로부터 데이터를 수신할 때 호출됩니다.
            override fun onNext(t: Int) {
                Log.d(TAG,"onNext : $t")
            }

        }
        // Observer를 Observable에 구독한다. 이를 통해 Observable은 데이터를 발행하고
        // Observer는 해당 데이터를 처리하게 됩니다.
        observable.subscribe(observer)


    }
}

참고 자료
https://reactivex.io/documentation/operators/just.html
https://zzandoli.tistory.com/27

profile
Android 개발자

0개의 댓글