티스토리 뷰

안녕하세요. 오늘은 RxJava의 Observable을 생성하는 함수에 대해 소개하는 시간을 갖겠습니다.

create()

just()와 달리 개발자가 onNext, onComplete, onError와 같은 알림을 직접 호출하여야 합니다.

Observable.create{ emmiter ->
    emmiter.onNext(100)
    emmiter.onNext(200)
    emmiter.onComplete()
}.subscribe(::print)
// 100 200

emmiter을 이용하여 직접 데이터를 넣어주고 완료를 실행하고 에러를 호출하는 모든 작업을 선언하여야 합니다.

fromArray()

fromArray()는 배열을 Observable로 변환하여주는 생성 함수입니다.
배열의 순서에 맞게 데이터를 발행하는 Observable을 만듭니다.

val arr = arrayOf(1, 2, 3)
Observable.fromArray(arr)
    .subscribe(::print)
    // 1 2 3

fromIterable()

Iterable 인터페이스를 구현한 다양한 클래스를 Observable로 변환하는 생성 함수입니다.
Iterable을 구현한 List 계열, Set 계열을 Observable로 만드는 함수라고 생각하시면 됩니다.

val names = arrayListOf("hello", "nice", "to", "meet", "you")
Observable.fromIterable(names)
    .subscribe(::print)
    // hello nice to meet you

val set = hashSetOf("seoul", "london", "paris")
Observable.fromIterable(set)
    .subscribe(::print)
    // seoul london paris

fromCallable(), fromFuture(), fromPublisher()

Java에서 기존에 제공하는 비동기 클래스, 인터페이스를 연동할 수 있도록 지원하는 생성 함수 입니다.

마치며

Observable은 쉽게 생성할 수 있으며 Observable을 이용한 처리는 강력하며 간편합니다.
create()를 잘 사용하도록 노력하여야 하며 create()를 잘 사용하려면 다음과 같은 사항을 주의하여야 합니다.

  1. 구독 해지가 되었을 때 등록된 콜백을 모두 해제하여야 한다.
  2. 구독자가 구독하는 동안에만 이벤트가 호출되어야 한다.
  3. 에러는 onError만을 통해 전달되어야 한다.
  4. 배압처리에 주의한다!(배압에 대해서는 다음 포스팅에서 알아보겠습니다.) 질문이나 오류는 아래 댓글에 남겨주시면 아는 만큼 답변드리고 오류는 즉각 처리하겠습니다.

감사합니다!

'기술 및 라이브러리 소개' 카테고리의 다른 글

WebRTC란?  (1) 2018.05.20
RxJava - Observable의 종류  (0) 2018.05.19
RecyclerView LayoutManager 소개  (0) 2018.05.14
RecyclerView - 안드로이드의 새로운 리스트 뷰  (0) 2018.05.13
iOS UI 함수 기본 정리  (0) 2018.05.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday