rxSwift

[rxSwift] 기본적인 Observable 의 종류

웰코발 2022. 10. 19. 20:30

just

  • 오직 하나의 요소를 포함하는 Observable 시퀀스를 생성
Observable<Int>.just(1)
// 1
// completed

 

of

  • 타입 추론을 통한 Observable 생성
Observable<Int>.of(1, 2, 3, 4, 5) 
// 1
// 2
// 3
// 4
// 5
// completed

Observable.of([1, 2, 3, 4, 5])
// [1, 2, 3, 4, 5]
// completed

 

from

  • 오직 array 형태의 element만 받음
Observable.from([1, 2, 3, 4, 5])
// 1
// 2
// 3
// 4
// 5
// completed

 

empty

  • 아무런 element를 방출하지 않음, completed 이벤트만 방출
Observable.empty()
// completed

 

never

  • 아무런 이벤트를 방출하지 않음. Completed 이벤트 조차 방출하지 않음
Observable.never()
// 아무것도 방출되지 않음.

 

range

  • start 부터 count크기 만큼의 값을 갖는 Observable을 생성
Observable.range(start: 3, count: 5)
// 3
// 4
// 5
// 6
// 7
// completed

그 외 Observable 이지만 방출하는 것들이 다른 것들.  (사용법은 Observable과 같음)

Trait

  • Single, Maybe, completable
  • 이전의 Observable 보다는 좁은 범위의 Observable, 선택적으로 사용할 수 있음
  • 좁은 범위의 Observable를 사용하는 이유는 가독성을 높이는 데 있음

Single

  • .success(value) 또는 .error 이벤트를 방출
  • .success(value) = .next + .completed
  • 성공 또는 실패로 확인될 수 있는 1회성 프로세스 (예. 데이터 다운로드, 디스크에서 데이터 로딩)
  • 정확히 한가지 요소만을 방출하는 Observable에 적합, asSingle로 변경가능

Completable

  • .completed 또는 .error 만을 방출하며, 이 외 어떠한 값도 방출하지 않는다.
  • 연산이 제대로 완료되었는지만 확인하고 싶을 때 (예. 파일 쓰기)
  • asCompleted는 없다.
  • Observable이 값요소를 방출한 이상 completable로 바꿀수 없다.
  • create를 활용해 만들수 밖에 없음, 어떠한 값도 방출하지 않는다.

Maybe

  • Single Completable을 섞어놓은 것
  • success(value), .completed, .error를 모두 방출할 수 있다.
  • 사용: 프로세스가 성공, 실패 여부와 더불어 출력된 값도 내뱉을 수 있을 때